2014-09-09 3 views
2

Я новичок в программировании не только с PHP, но и вообще. В настоящее время я делаю мой первый проект, чтобы улучшить себя. Я сделал это OneC, но теперь я хочу, чтобы все мои запросы на работу с подготовленными операторами, которые что-то новое для меня ...PHP Предупреждение: mysqli_stmt_bind_result()

$create_stmt = mysqli_prepare($connection, "INSERT INTO `users`(`user_name`, `password`) VALUES (?,?)"); 
    if(!$create_stmt){ 
     echo 'error'; 
     exit; 
    } 
    mysqli_stmt_bind_param($create_stmt, 'ss',$username,$password); 
    mysqli_stmt_execute($create_stmt); 
    mysqli_stmt_bind_result($create_stmt, $new_uname, $new_unamepass); 
    mysqli_stmt_fetch($create_stmt); 

Так вот сделка. Я имею такого рода ошибки:

Warning: mysqli_stmt_bind_result(): Number of bind variables doesn't match number of fields in prepared statement.

Поскольку я хочу добавить 2 значения в моей таблице "пользователей я объявляющего 2 новые переменные $new_uname, $new_unamepass, но почему-то это не правильно ...

Также mysqli_stmt_fetch($create_stmt); не является ИСТИННЫМ, но должно быть, если все в порядке (очевидно, это не нормально). Поэтому, пожалуйста, если кто-нибудь может мне помочь или дать мне совет, это будет здорово!

+3

Ваш ВСТАВИТЬ запрос не возвращает никаких данных, как SELECT, запрос будет. Поэтому вы, вероятно, хотите удалить свои вызовы bind_result и получить. – James

+0

Я бы предложил вам попробовать запустить это с помощью объектов. Это значительно упрощает код. – Machavity

+0

@Machavity: совершенно бесполезное «решение», идущее в ООП, не «упростит» ЛЮБОЙ из этого кода. –

ответ

1

TRY Это:

$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world'); 

/* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

$stmt = $mysqli->prepare("INSERT INTO `users`(`user_name`, `password`) VALUES (?,?)"); 
$stmt->bind_param('ss', $user, $pass); 

$user='username'; 
$pass = 'Password1234'; 

/* execute prepared statement */ 
$stmt->execute(); 

printf("%d Row inserted.\n", $stmt->affected_rows); 

/* close statement and connection */ 
$stmt->close(); 
Смежные вопросы