2010-12-17 113 views
0
function addAlbum($album){ 
     $connection = mysqli_connect(HOST,USER,PASS,DATABASE); 
     $stmt = mysqli_prepare($connection,'INSERT INTO `'.TABLE_ALBUMS.'` (albumName) VALUES (":album")'); 
     mysqli_stmt_bind_param($stmt,':album'); 
     $result = mysqli_stmt_execute($stmt); 

      if($result){ 
       return true; 
      } else { 
       return false; 
      } 

    } 

我得到这个错误:PHP和MySQL准备好的语句

mysqli_stmt_bind_param() [function.mysqli-stmt-bind-param]: Number of elements in type definition string doesn't match number of bind variables 

任何帮助,将不胜感激。

+0

这个时候$连接 - >准备()将无法工作。我可以猜测,如果你在准备好行后'var_dump($ stmt)',你会得到一个'false'。 – s3v3n 2010-12-17 23:34:15

+0

是的,它返回false,任何想法为什么? – Adamski 2010-12-17 23:38:24

+1

可能你的sql语句没有准备好?你检查了错误吗? – Rahly 2010-12-17 23:40:22

回答

3

你必须混合使用这两个程序的风格和面向对象的风格

,可以完全在程序风格或副使用与

$sql  = 'INSERT INTO '.TABLE_ALBUMS.' (albumName) VALUES (?)'; 
$connection = mysqli_connect(HOST,USER,PASS,DATABASE); <- procedural style 
$stmt  = mysqli_prepare($connection, $sql);  <- procedural style 
mysqli_stmt_bind_param($stmt, 's', $album);   <- procedural style 
$result  = mysqli_stmt_execute($stmt);    <- procedural style 
... 
+0

好吧,这是有道理的,我现在得到一个警告,我编辑了我的问题。 – Adamski 2010-12-17 23:56:21

+0

不要使用':相册',使用单个问号会做... – ajreal 2010-12-17 23:57:43

+0

非常感谢,PERFECT! – Adamski 2010-12-18 00:03:07