mysql编写语句,难以理解它是如何工作的

时间:2010-12-17 21:59:26

标签: 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($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行

任何人都可以告诉我哪里出错了?

非常感谢

1 个答案:

答案 0 :(得分:4)

bind的第一个参数应该是变量的类型:

$stmt->bind_param("s", $album);

另外,您应该检查execute()的返回值,而不是$stmt

$result = $stmt->execute();
if($result){
  echo "yes";
}
else {
  echo "no";
}

另外我要说的是,每次插入内容时准备语句都不是一个好的方法。准备好的语句应该是类变量,或者如果你不是oop,全局变量,那么每次调用函数时都不要准备语句。只需编写一个函数init(),它将准备您将使用的所有语句。