У меня есть следующий код:MySQLi подготовленное заявление, кажется, не работает
<?php
if(!empty($_POST)){
$db = new mysqli('localhost', 'root', '', 'verif1');
$password = $_POST['pass'];
$username = $_POST['user'];
$table = "admins";
$password = hash("sha256", $password);
$statement = $db->prepare("SELECT COUNT(*) FROM {$table} WHERE username = ? AND password = ?");
$statement->bind_param("ss", $username, $password);
$statement->execute();
$statement->bind_result($numrows);
if($numrows == 1){
echo "yeah correct!<br>";
}else{
echo "No :(<br>";
}
}
?>
<form action="" method="POST">
<input type="textbox" name="user">
<br>
<input type="password" name="pass">
<br>
<input type="submit">
</form>
я уверен, что все правильно (не метание ошибки, ничего) он просто не работает! Я попытался print_r(), чтобы увидеть возразили, что вернулся и я получаю это: после выполнения() я это сделать:
print_r($statement);
die();
и это дает мне это:
mysqli_stmt Object ([affected_rows] => -1 [insert_id] => 0 [num_rows] => 0 [param_count] => 2 [field_count] => 1 [errno] => 0 [error] => [error_list] => Array() [sqlstate] => 00000 [id] => 1)
Не, они не может –
@YourCommonSense Вы не намерены подробно останавливаться на том, как это не сработает. Это код, предлагаемый на официальном [веб-сайте PHP] (http://www.php.net/manual/en/mysqli-stmt.num-rows.php). Не специально называть вас неправдой, а просто искать объяснения. –
@Brandon Enriquez: что, если вы хотите подсчитать, сколько строк в таблице? Вы бы выбрали все, чтобы получить количество строк? – zerkms