2015-06-07 3 views
0

Я пытаюсь превратить этот запрос в подготовленный оператор, но мне пока не повезло. Я приложил одну из своих попыток. Идея заключается в том, что я использую это, чтобы проверить, сколько строк возвращается с помощью mysqli_num_rows после этого.Включение запроса mysql в подготовленный оператор

$sql2=mysqli_query($bd, "SELECT address FROM member WHERE address='".$address."'"); 

Это моя попытка создать подготовленное заявление.

$ustmt = $bd->prepare("SELECT username FROM member WHERE username = ?"); 
$ustmt->bind_param("s", $username); 
$sql2 = $ustmt->execute(); 

Это правильно? И если да, то как я могу проверить количество строк, возвращаемых в $ sql2?

ответ

1

Да, ваша подготовка и исполнение верны.

Выполнить вызов возвращает значение boolean, который будет true в случае успеха еще false (если false свойство $stmt->error будет установлено с сообщением об ошибке).
Это стоит проверить перед продолжением, потому что если его ложь, результата не будет.
То же самое с подготовкой, если вызов $mysqli->prepare(...) возвращает false, $mysqli->error будет установлен с сообщением об ошибке.

После выполнения вы можете получить количество затронутых строк либо свойством $num_rows, в случае его заявления SELECT, либо имуществом $affected_rows в других случаях.

echo $stmt->num_rows; 

Или, вы можете принести mysqli_result объект из отчета с помощью метода get_result().
mysqli_result объект содержит открытое поле $num_rows, так что вы можете проверить количество строк по:

$res = $stmt->get_result(); 
echo $res->num_rows; 

Для других методов в mysqli_result объекта, я рекомендую проверить на docs.

+0

Привет, Я пытаюсь использовать ваш метод, но после выполнения $ sql2 имеет значение 1, даже если он возвращает 0 строк. mysqli_num_rows ничего не делает, и я не могу использовать get_result, так как у моего веб-пространства нет соответствующего драйвера. – user3822332

+1

Ваша переменная '$ sql2' равна 1, что равно« true ». Это означает, что вызов 'execute' был успешным. После этого вам нужно получить количество строк из объекта stmt: '$ ustmt-> num_rows;'. – Jite

+0

О, блестящий! Я такой плотный! Спасибо огромное! – user3822332

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