2010-12-17 147 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