Sql结果对象在php字符串


Sql result object to string in php

我创建了一个论坛,用户可以通过给出问题和选项来创建民意调查。然后,我使用Ajax和PHP将这些数据发送到数据库,并创建一个名为PollTable0的表。随着新分子的加入,数量增加了sa。"PollTable1","PollTable2"等。我通过计算数据库中表的数量得到这些数字。我的代码是这样的:

<?php
if (isset($_POST['NewPoll'])) {
    $PollArray = $_POST['NewPoll'];
}
$con = mysqli_connect("localhost", "root", "123", "polldatabase") or die("DIE");
$getnumber = "SELECT COUNT(*) FROM information_schema.TABLES
            WHERE TABLE_SCHEMA='polldatabase'";
$number = mysqli_query($con, $getnumber);
$sql = "CREATE TABLE PollTable" . $number . " (" . $PollArray[0] . "VarChar(255))";
mysqli_query($con, $sql);
for ($i = 1; $i < count($PollArray); $i++) {
$target =   "ALTER TABLE PollTable" . $number . " ADD " . $PollArray[i] . " VARCHAR(255)";
mysqli_query($con, $target);
}
echo "Thank you for submitting your poll";
mysqli_close($con);
?>

现在的问题是$number是一个我相信sql结果对象。因此,当将字符串与$number相加时,它会给出错误:

Object of class mysqli_result could not be converted to string

如果我是对的,是否有一种方法将结果对象转换为字符串。我试过strval()和其他一些方法,但都不起作用。如果我错了,你认为我得到这个错误的原因是什么?

你应该在行后加上:

$number = mysqli_query($con, $getnumber);

:

$number = mysqli_fetch_row($number);
$number = $number[0];

mysqli_query只查询数据库,但如果你想获取结果,你需要使用一个函数:mysli_fetch_row, mysqli_fetch_array, mysqli_fetch_assoc

问题就在这里

$number = mysqli_query($con, $getnumber);

Mysqli::query返回

失败时返回FALSE。对于成功的SELECT, SHOW, DESCRIBE或EXPLAIN查询mysqli_query()将返回一个mysqli_result对象。为其他成功的查询mysqli_query()将返回TRUE。

并且您在下一行中使用$number,因此它发出错误。

您需要在使用它之前获取结果

http://www.php.net/manual/en/mysqli-result.fetch-assoc.php

$getnumber = "SELECT COUNT(*) as total FROM information_schema.TABLES
            WHERE TABLE_SCHEMA='polldatabase'";
$result = mysqli_query($con, $getnumber);
$data = mysqli_fetch_assoc($result);
$number = $data['total'];

你需要改变

$getnumber = "SELECT COUNT(*) FROM information_schema.TABLES
            WHERE TABLE_SCHEMA='polldatabase'";
$number = mysqli_query($con, $getnumber);

$getnumber = "SELECT COUNT(*) as number FROM information_schema.TABLES
            WHERE TABLE_SCHEMA='polldatabase'";
$query = mysqli_query($con, $getnumber);
$result = mysqli_fetch_object($query);
$number = $result->number;