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 前端echarts坐标轴问题
  • ¥15 CMFCPropertyPage
  • ¥15 ad5933的I2C
  • ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
  • ¥15 数学建模求思路及代码
  • ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题
  • ¥15 谁会P4语言啊,我想请教一下
  • ¥15 这个怎么改成直流激励源给加热电阻提供5a电流呀
  • ¥50 求解vmware的网络模式问题 别拿AI回答
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳