【问题标题】:Mysqli bind param – number of variables doesn't match number of parameters [duplicate]Mysqli绑定参数 - 变量数与参数数不匹配[重复]
【发布时间】:2012-09-24 03:06:06
【问题描述】:

我不明白为什么会收到错误消息:“变量数与预准备语句中的参数数不匹配”。

我的代码如下所示:

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

【问题讨论】:

  • 你忘了把 $DB['con']-> 放在 bind_param() 和 execute() 之前

标签: php database mysqli sqlbindparameter


【解决方案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()))");

【讨论】:

  • 那为什么不被接受?
猜你喜欢
  • 2020-02-05
  • 2013-01-14
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2016-08-30
  • 2021-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多