绑定变量时出错

时间:2015-07-20 03:19:23

标签: php mysql prepared-statement

我正在写一篇准备好的陈述中的错误......

 Number of elements in type definition string doesn't match number of bind variables on line 33. Create Topic Insert bind_param() failed:

我唯一能想到的是因为NOW()字段,但我认为不需要为此设置变量?

我在这方面是否有明显遗漏或可能导致此错误的原因?

//Prepared INSERT stmt for the forum topic
    $stmt = $con->prepare("INSERT INTO forum_topics (`category_id`, `topic_title`, `topic_creator`, `topic_date`, `topic_reply_date`) 
    VALUES(?, ?, ?, NOW(), NOW())");
    if ( !$stmt || $con->error ) {
        die('Create Topic Insert prepare() failed: ' . htmlspecialchars($con->error));
    }
    if(!$stmt->bind_param('sssii', $cid, $title, $creator)) {
        die('Create Topic Insert bind_param() failed: ' . htmlspecialchars($stmt->error));
    }
    if(!$stmt->execute()) {
        die('Create Topic Insert execute() failed: ' . htmlspecialchars($stmt->error));
    }

2 个答案:

答案 0 :(得分:0)

  

mysqli_stmt :: bind_param - mysqli_stmt_bind_param - 将变量绑定到预准备语句作为参数

所以在你的bind_param中,你需要插入5个参数。

答案 1 :(得分:0)

我解决了这个问题。我试图绑定NOW()字段。我将代码行更改为..

  if(!$stmt->bind_param('sssii', $cid, $title, $creator)) {

现在它完美无缺。