所以,我的PHP代码出了问题,我试图运行两个已准备好的语句,这些语句都是用同一个$mysqli对象准备的。
require 'database.php';
$mysqli = new mysqli($database_host, $database_user, $database_pass, $database_name);
/*First check if there is already a preference record for this user
with this particular course.*/
$query = "SELECT * FROM timetablePrefs WHERE username=? AND courseID=?";
$stmt = $mysqli->prepare($query);
foreach ($courseList as $key => $value)
{
$stmt->bind_param("ss", $username, $key);
$stmt->execute();
if (($stmt->num_rows) === 1)
continue;
else
{
$query = "INSERT INTO timetablePrefs (username, courseID, hexColour, hidden) ";
$query .= "VALUES (?, ?, ?, 0)";
$prepared = $mysqli->prepare($query);
$prepared->bind_param("sss", $username, $key, "#FFFFFF");
if (!($prepared->execute()))
print("Sorry couldnt change your colour preferences.");
$prepared->close();
}
}
$stmt->close();
$mysqli->close();我可能漏掉了什么东西,你能同时运行两个吗?如有任何帮助,将不胜感激!请提出任何问题;)
我收到的错误与行有关;$prepared->bind_param("sss", $username, $key, "#FFFFFF");致命错误:调用非对象上的成员函数bind_param()
发布于 2014-04-27 17:43:44
发布于 2021-03-24 11:05:01
我是以过程的方式做我的事情,但也有相同类型的issue.So,我创建了两个不同的DB连接变量(只是一个黑客,不合适的解决方案),而不是这样做:
stmt_pnl = mysqli_stmt_init($conn);
stmt_bank = mysqli_stmt_init($conn);我做了:
stmt_pnl = mysqli_stmt_init($conn);
stmt_bank = mysqli_stmt_init($conn_bank);这个错误消失了,它起了作用。
编辑:上面的答案只是一个解决问题的黑客,而不是一个实际的解决方案。解决此错误的正确方法是按照以下顺序进行:
(特别感谢你的常识)
https://stackoverflow.com/questions/23326669
复制相似问题