提问者:小点点

Mysqli绑定参数-变量数与参数数不匹配[重复]


我不明白为什么我会得到这样的错误:“prepared Statement中的变量数不匹配参数数”。

我的代码如下所示:

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

共1个答案

匿名用户

问题就出在这一行:

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

相关问题