3

好的,所以我正在尝试更新博客条目,并且当我尝试运行脚本时,我正在调用非对象上的成员函数 bind_param()。我已经进行了广泛的研究,看看我是否可以自己修复它,但我一定错过了一些东西。

<?php
$stmt = $mysqli->prepare("UPDATE blogentries SET 
  headline = ?, 
   image = ?, 
   caption = ?,  
   article = ?
    WHERE id = ?");
$stmt->bind_param('ssssi',
   $_POST['headline'],
   $_POST['image'],
   $_POST['caption'],
   $_POST['article'],
   $_POST['id']);
$stmt->execute(); 
$stmt->close();

?>

提前致谢,

奥斯汀

更新:这是数据库连接

我添加了额外的 $mysqli 连接以进行调试,即使没有它也会发生错误。

4

3 回答 3

14

$stmt大概是false

if ($stmt = $mysqli->prepare(...)) {
    $stmt->bind_param(...);
    ...
}
else {
    printf("Errormessage: %s\n", $mysqli->error);
}
于 2013-07-21T01:26:45.633 回答
1

我通过手动测试查询解决了这个问题。事实证明,这是一个将每个字段名称放在反引号之间并删除查询中标有问号的参数的任何引号的问题。

于 2017-09-19T12:14:51.353 回答
-1

如果到数据库的所有连接都正确,请尝试在查询中查找语法。对我来说,我正在执行连接,并且没有在两个表都有一个列的 where 子句字段中指定“TABLENAME”。

于 2016-04-05T19:06:46.313 回答