我一直被这个错误困扰,请帮帮我这是我的代码 PHP 致命错误:调用成员函数 bind_param()
$statement= $db->prepare("insert into uploaddetails(idnum,title,desc,author,tags,title) values(?,?,?,?,?,?)");
$id='NULL';
$title=$_POST['title'];
$description=$_POST['description'];
$author=$_POST['author'];
$tags=$_POST['tags'];
$file= basename($_FILES["fileToUpload"]["name"]);
$statement->bind_param( 'isssss', $id,$title, $description,$author,$tags,$file);
$statement->execute();
$db->close();
$statement->close();
Run Code Online (Sandbox Code Playgroud)
由于没有其他人发现该问题,我将其发布给您。你prepare()失败的原因是因为你试图使用MySQL Reserved Word。这个词desc在 MYSQL 中是一个保留字,这意味着你需要backticks像这样包装它:
$statement= $db->prepare("insert into uploaddetails(idnum,title,`desc`,author,tags,file) values(?,?,?,?,?,?)");
Run Code Online (Sandbox Code Playgroud)
在插入数据库/使用准备好的语句时,它也有助于使用正确的实践。
$statement= $db->prepare("insert into uploaddetails(idnum,title,`desc`,author,tags,title) values(?,?,?,?,?,?)");
if($statement !== FALSE) {
// do the binds...etc
}
Run Code Online (Sandbox Code Playgroud)
file 也是一个保留字,我不知道您实际的文件列名称是什么,所以请记住这一点。