几个小时以来,我一直在用头撞墙,在 SO 上阅读了几个答案,在网上搜索,试图找到解决方案。虽然我意识到这里已经提出并回答了类似的问题,但我的代码不同,所以我无法从以前的答案中推断出我的问题。
我是 PHP/MySQL 的新手。我有一个投票脚本,我使用我在网上找到的一些代码和我自己的知识拼凑在一起;MySQL是我的,标准的东西。每当一个人为两件事中的一件投票时,它在数据库中的对应值就会增加一。我正在尝试检索每个值并将其分配给它自己的变量并执行计算。我可以很好地检索第一个,但我得到了可怕的
Trying to get property of non-object in..." error
和
"Fatal error: Call to a member function bind_param() on a non-object in...
对于第二个。和第一次prepare一模一样,不知道怎么了?这可能不是最有效的方法,但就像我说的,我是新手。我确实理解错误试图传达的内容;除了 WHERE 子句中的 id 之外,我只是不明白为什么当 prepare 语句与之前的语句相同时会出现错误。 var_dump($query2)
返回bool(false),所以我可以清楚地看到那里什么都没有。但是数据库中有一些东西。
<?php
// Turn on error reporting
ini_set('display_errors', 'On');
// Connect to database
$mysqli = mysqli_connect('localhost', 'dbuser', 'dbpwd', 'dbname');
// Check connection
if (!$mysqli || $mysqli->connect_errno)
{
echo "Connection error: " . $mysqli->connect_errno . " " . $mysqli->connect_error;
exit();
} else if (isset($action)) // This is set through a page redirect
{
// DISPLAY ITEM - THIS WORKS FINE
if (!($query = $mysqli->prepare("SELECT votes FROM influential WHERE id = 1")))
{
echo "Prepare failed: " . $query->errno . " " . $query->error;
}
if (!$query->execute()){
echo "Execute failed: " . $mysqli->connect_errno . " " . $mysqli->connect_error;
}
if (!$query->bind_result($infl1))
{
echo "Bind failed: " . $mysqli->connect_errno . " " . $mysqli->connect_error;
}
if ($query->fetch())
{
echo $infl1;
}
// DISPLAY ITEM - THIS DOESN'T WORK
if (!($query2 = $mysqli->prepare("SELECT votes FROM influential WHERE id = 2")))
{
echo "Prepare failed: " . $query2->errno . " " . $query2->error;
} else echo "Prepare succeeded.";
$query2->bind_param("i", $votes);
if (!$query2->execute()){
echo "Execute failed: " . $mysqli->connect_errno . " " . $mysqli->connect_error;
} else echo "Execute succeeded.";
if (!$query2->bind_result($infl2))
{
echo "Bind failed: " . $mysqli->connect_errno . " " . $mysqli->connect_error;
} else echo "Bind succeeded.";
if ($query2->fetch())
{
echo $infl2;
}
exit();
$mysqli->close();
}
?>