在非对象MySQLi上调用成员函数bind_param()

时间:2013-07-21 01:18:43

标签: php mysqli

好的,所以我正在尝试更新博客条目,当我尝试运行脚本时,我正在调用非对象上的成员函数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();

?>

提前致谢,

奥斯汀

更新:这是db connect

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

3 个答案:

答案 0 :(得分:14)

$stmt可能是false

if ($stmt = $mysqli->prepare(...)) {
    $stmt->bind_param(...);
    ...
}
else {
    printf("Errormessage: %s\n", $mysqli->error);
}

答案 1 :(得分:1)

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

答案 2 :(得分:-1)

如果与数据库的所有连接都正确,请尝试查找 查询中的语法。对我来说,我正在进行加入而没有 指定&#34; TABLENAME&#34;在where子句中,两者都是 表格有一列。