Php mysql编写的语句,难以理解其工作原理
我正在尝试使用准备好的语句,但无法使其成功运行。 这是我的密码:Php mysql编写的语句,难以理解其工作原理,php,mysql,prepared-statement,Php,Mysql,Prepared Statement,我正在尝试使用准备好的语句,但无法使其成功运行。 这是我的密码: function addAlbum($album){ $connection = mysqli_connect(HOST,USER,PASS,DATABASE); /*$sql = 'INSERT INTO `'.TABLE_ALBUMS.'` (albumName) VALUES ("'.$album.'")'; $result = mysqli_query($connectio
function addAlbum($album){
$connection = mysqli_connect(HOST,USER,PASS,DATABASE);
/*$sql = 'INSERT INTO `'.TABLE_ALBUMS.'` (albumName) VALUES ("'.$album.'")';
$result = mysqli_query($connection,$sql);*/
$stmt = $dbh->prepare('INSERT INTO `'.TABLE_ALBUMS.'` (albumName) VALUES ("'.$album.'")');
$stmt->bindParam(':albumName', $album);
$result = $stmt->execute();
if($result){
header("Location: index.php?success");
} else {
header("Location: index.php?fail");
}
}
我在firefox中运行了此程序,但出现了错误,我得到的结果如下:
致命错误:调用未定义的方法
中的mysqli_stmt::bindParam()
/Applications/MAMP/htdocs/PHPproject/includes/functions.inc.php
第16行
谁能告诉我哪里出了问题
非常感谢bind的第一个参数应该是变量的类型:
$stmt->bind_param("s", $album);
您还应该检查execute()
的返回值,而不是$stmt
:
$result = $stmt->execute();
if($result){
echo "yes";
}
else {
echo "no";
}
我还要说,每次插入内容时准备语句不是一个好主意。准备好的语句应该是类变量,如果您不在oop中,则应该是全局变量,因此您不会在每次调用函数时准备语句。只需编写一个函数
init()
$stmt->bind_param("s", $album);
您还应该检查execute()
的返回值,而不是$stmt
:
$result = $stmt->execute();
if($result){
echo "yes";
}
else {
echo "no";
}
我还要说,每次插入内容时准备语句不是一个好主意。准备好的语句应该是类变量,如果您不在oop中,则应该是全局变量,因此您不会在每次调用函数时准备语句。只需编写一个函数init()
,它将准备好您将要使用的所有语句。我们是否应该假设您的脚本输出noooooo
?您正在使用google chrome吗?Google Chrome无法正确显示所有错误,因此请使用firefox。您还应该在phpthanks中启用错误输出,好的,我已经更新了帖子,以显示我运行函数时遇到的致命错误。我编辑了我的答案。在php.net网站bindParam中,当它是bind_param时,请查看正确的函数名。谢谢你的帮助。我们应该假设你的脚本输出noooooo
?你在使用谷歌浏览器吗?Google Chrome无法正确显示所有错误,因此请使用firefox。您还应该在phpthanks中启用错误输出,好的,我已经更新了帖子,以显示我运行函数时遇到的致命错误。我编辑了我的答案。在php.net网站bindParam中,当它是bind_param时,请查看正确的函数名。谢谢你的帮助。谢谢你的建议,我似乎仍然无法让它运行,我已经检查了PDO是否安装在我的php.ini文件中,并且没有被注释掉。我已经编辑了我的帖子,以显示最新的函数和我收到的浏览器错误。谢谢你的建议,我似乎仍然无法让它运行,我已经检查过PDO是否安装在我的php.ini文件中,它没有被注释掉。我已经编辑了我的帖子,以显示我得到的最新函数和浏览器错误。