2015-07-20 2 views
1

я получаю сообщение об ошибке в подготовленном заявлении я пишу ...Ошибка с связывающими переменными

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)); 
    } 
+1

U являются обязательными 3 ... sss – Drew

ответ

0

mysqli_stmt :: bind_param - mysqli_stmt_bind_param - Связывает переменные в заявлении в качестве параметров

Так что в вашем bind_param, вам нужно вставить 5 параметров.

0

Я решил проблему. Я пытался связать поля NOW(). Я изменил кодную строку на.

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

и он отлично работает сейчас.

Смежные вопросы