2010-12-17 110 views
1

我正在尝试使用准备好的语句,但无法让它成功运行。 这里是我的代码:mysql准备语句,麻烦理解它是如何工作的

Fatal error: Call to undefined method mysqli_stmt::bindParam() in /Applications/MAMP/htdocs/PHPproject/includes/functions.inc.php on line 16

可以在任何一个,请告诉我,我错了:

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上,这就是我得到的错误是把这个?

千恩万谢

+0

我们是否应该假设你的脚本输出'Nooooo'? – 2010-12-17 22:08:01

+0

你使用谷歌浏览器吗? Google Chrome浏览器没有正确显示所有错误,因此请使用firefox进行此操作。 此外,你应该启用错误输出在PHP – s3v3n 2010-12-17 22:42:59

+0

谢谢,好吧,我已更新帖子,以显示我运行我的功能时得到的致命错误。 – Adamski 2010-12-17 22:48:59

回答

4

为绑定第一个参数应该是变量的类型:

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

您也应该检查的​​返回值,而不是$stmt

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

而且我会说,每次插入内容时,准备声明都不是一个好的理念。准备好的语句应该是类变量,或者如果你不在oop中,全局变量,所以每次调用函数时都不准备语句。只需编写一个函数init(),它将准备您将使用的所有语句。

+0

感谢您的建议,我仍然无法让它运行,我已经检查PDO是否安装在我的php.ini文件中,它没有被注释掉。 – Adamski 2010-12-17 22:33:40

+0

你有什么错误?请将它们添加到问题中。 – s3v3n 2010-12-17 22:34:40

+0

我已编辑我的帖子,以显示我得到的最新功能和浏览器错误。 – Adamski 2010-12-17 22:40:30