dongping4273 2014-10-15 04:42
浏览 54
已采纳

将bind_param与MySQLi一起使用时出错[关闭]

Why am I getting an error with this code?

$stmt = $mysqli->prepare(
    "INSERT INTO buku VALUES (
        NULL,
        (SELECT id_penerbit FROM penerbit WHERE nm_penerbit = ?),
        (SELECT id_pengarang FROM pengarang WHERE nm_pengarang = ?),
        (SELECT id_kategori FROM kategori WHERE nm_kategori = ?),
        (SELECT id_lemari FROM lemari WHERE nm_lemari = ?),
        ?, ?, ?, ?, ?, 0, ?");
$stmt->bind_param("ssssssisss", $penerbit, $pengarang, $kategori, $lemari, $judul, $isbn, $hal, $terbit, $bahasa, $sinopsis);
if($stmt->execute()) showAlert("Berhasil mengubah kategori", "success");
else showAlert($stmt->error);

The error I'm getting is:

Fatal error: Call to a member function bind_param() on a non-object in C:\xampp\htdocs\eperpus\admin\buku-tambah.php on line 34

  • 写回答

1条回答 默认 最新

  • dongzhi4073 2014-10-15 05:01
    关注

    You're calling ->bind_param() on a non-object - which means there was an error in creating the object ($stmt) and it returned false - as documented.

    The only way to troubleshoot the problem would be to investigate why the ->prepare() call failed - an issue which is a tad bit hard to troubleshoot as an outsider with only access to one line of code:

    $stmt = $mysqli->prepare("INSERT INTO buku VALUES (NULL, (SELECT id_penerbit FROM penerbit WHERE nm_penerbit = ?), (SELECT id_pengarang FROM pengarang WHERE nm_pengarang = ?), (SELECT id_kategori FROM kategori WHERE nm_kategori = ?), (SELECT id_lemari FROM lemari WHERE nm_lemari = ?), ?, ?, ?, ?, ?, 0, ?");
    

    Edit: The query itself is bad, as it doesn't close the VALUES ( parenthesis. This was the issue.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换