我正在尝试使用准备好的语句,但无法成功运行它。 这是我的代码:
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()in /Applications/MAMP/htdocs/PHPproject/includes/functions.inc.php 第16行
任何人都可以告诉我哪里出错了?
非常感谢答案 0 :(得分:4)
bind的第一个参数应该是变量的类型:
$stmt->bind_param("s", $album);
另外,您应该检查execute()
的返回值,而不是$stmt
:
$result = $stmt->execute();
if($result){
echo "yes";
}
else {
echo "no";
}
另外我要说的是,每次插入内容时准备语句都不是一个好的方法。准备好的语句应该是类变量,或者如果你不是oop,全局变量,那么每次调用函数时都不要准备语句。只需编写一个函数init()
,它将准备您将使用的所有语句。