3

我不明白为什么会出现错误:“变量数与准备好的语句中的参数数不匹配”。

我的代码如下所示:

$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();
4

1 回答 1

9

问题出在这一行:

$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()))");
于 2012-10-03T08:19:05.540 回答