2012-10-03 172 views
3

我不明白爲什麼我會收到錯誤:「變量數量與預準備語句中的參數數量不匹配」。Mysqli綁定參數 - 變量數量不匹配參數數量

我的代碼如下所示:

$DB['con'] = new mysqli($$DB['host'],$DB['user'],$DB['pass'],$DB['base']); 

$stmt=$DB['con']->prepare("insert into points(iduser,puncte,nume,email,telefon,ultimulpost)values('?',?,'?','?','?',(SELECT CURDATE()))"); 
$stmt->bind_param('sisss',$idm,$mynumber,$nume,$email,$tel); 
$stmt->execute(); 
+0

你忘了$ DB [ 'CON'] - > bind_param前()和執行() – bodi0

回答

8

的問題是在這條線:

$stmt=$DB['con']->prepare("insert into points(iduser,puncte,nume,email,telefon,ultimulpost)values('?',?,'?','?','?',(SELECT CURDATE()))"); 

你的錯誤是,你把周圍的?佔位符引號。這意味着它們被解釋爲字符串?,而不是作爲需要填充的佔位符。因此,您實際上只有一個佔位符,所以當您發送五位時,它會告訴您錯誤的號碼。

引號是不必要的。 'sisss'的全部意思是說「這些值是字符串」,所以你不需要用引號來表示同樣的事情。

下面應該工作:

$stmt=$DB['con']->prepare("insert into points(iduser,puncte,nume,email,telefon,ultimulpost)values(?,?,?,?,?,(SELECT CURDATE()))"); 
+2

那麼,爲什麼這個不被接受? –

相關問題