2013-07-24 2 views
0

У меня есть следующий код: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)

ответ

-1

Вы можете использовать следующий код для подсчета количества строк вместо $statement->bind_result($numrows);

$statement->store_result(); 
if ($statement->num_rows == 1) 
    echo "yeah correct!<br>"; 
} else { 
    echo "No :(<br>"; 
} 
+0

Не, они не может –

+0

@YourCommonSense Вы не намерены подробно останавливаться на том, как это не сработает. Это код, предлагаемый на официальном [веб-сайте PHP] (http://www.php.net/manual/en/mysqli-stmt.num-rows.php). Не специально называть вас неправдой, а просто искать объяснения. –

+0

@Brandon Enriquez: что, если вы хотите подсчитать, сколько строк в таблице? Вы бы выбрали все, чтобы получить количество строк? – zerkms

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