2013-05-22 3 views
2

Просто обновляйте мои соединения mysql и т. Д., Чтобы использовать эту реализацию mysqli. Я пытаюсь запустить код ниже ...mysqli insert statement error

Подключение к базе данных прекрасно и работает, и когда я подставляю? для реальных значений он работает. Может ли кто-нибудь помочь мне с ошибкой ниже?

Спасибо.

Код:

$sql = "INSERT INTO customers (cap_login, cap_pword, title, firstname, lastname, email) 
VALUES (?,?,?,?,?,?)"; 
echo $sql; 

$stmt = $db->prepare($sql); 
$stmt->bind_param($username, $pass_hash, $title, $firstname, $lastname, $email); 
$stmt->execute(); 
$stmt->close(); 

Ошибка:

Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in.... 

Я повторил вне SQL Постулаты и получил это:

INSERT INTO customers (cap_login, cap_pword, title, firstname, lastname, email) VALUES (?,?,?,?,?,?) 
+1

указал тип первым, затем передайте переменные, т.е. '$ stmt-> bind_param (" ssssss " , $ username, $ pass_hash, $ title, $ firstname, $ lastname, $ email); 'См. http://php.net/manual/en/mysqli-stmt.bind-param.php –

ответ

2

Синтаксис mysqli_stmt:

mysqli_stmt::bind_param (string $types , mixed &$var1 [, mixed &$... ]) 

Вы пропустили указанный типы переменной

Попробуйте

$stmt->bind_param("ssssss",$username, $pass_hash, $title, $firstname, $lastname, $email); 
+0

+1 Btw, это Подход PDO или подход Mysqli. ? –

+0

@vivek mysqli approach ... –

+0

Ох .. да в PDO мы инициализируем объект PDO. Спасибо anyways :) –

1

Перед использованием функции один должен читать the manual page for the right syntax , который составляет

bind_param (string $types , mixed &$var1 [, mixed &$... ]) 
        ^^^^^^ 

Таким образом, первый параметр должен быть строкой, как 'sssssss'