2012-10-03 130 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

那么,为什么这个不被接受? –

相关问题