我创建了一个论坛,用户可以通过给出问题和选项来创建民意调查。然后,我使用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;