2015-09-27 3 views
0

Я работаю над скриптом входа с подготовленными инструкциями в процедуре PHP процедурного mysqli. Вот мой текущий код:Объект, возвращаемый функцией mysql_num_rows()

<?php 
include "/ssincludes/functions.php"; 
$host = HOST; 
$username = USER; 
$password = PASSWORD; 
$db_name = DATABASE; 
$table = TABLEU; 
//These includes and constants are fine I checked them all 
$con = mysqli_connect($host, $username, $password, $db_name); 

if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
$myusername='test'; 
$mypassword='password1'; 

$sql="SELECT * FROM $table WHERE user_name=? and password=?"; 
$result=mysqli_prepare($con, $sql); 
mysqli_stmt_bind_param($result, 'ss', $myusername, $mypassword); 
mysqli_execute($result); 
mysqli_stmt_fetch($result); 
$row_cnt = mysqli_num_rows($result); 
echo $row_cnt; 
?> 

Ошибка возвращаемый: Внимание: mysqli_num_rows() ожидает параметр 1, чтобы быть mysqli_result, данный объект

Я думал, что я вынул все экземпляры OO PHP в моем сценарии? Кроме того, я понимаю, что это может означать мой запрос неверен, поэтому я побежал на MySQL в базе данных, и все, кажется, хорошо там:

enter image description here

Так что я теряюсь, как к тому, что может быть проблема. Я читал много похожих сообщений (может быть, мне не хватает одного, что точно похоже на мое), и никто, кажется, не справляется с этой проблемой. Я ценю ваше время и помощь.

P.S. Я понимаю проблемы безопасности с помощью текстовых паролей и с использованием пароля 1. Я планирую использовать более эффективные методы обеспечения безопасности, поскольку я создаю это, но я просто хочу сначала подготовить подготовленные заявления.

ответ

3

Вы должны использовать

mysqli_stmt_execute 
mysqli_stmt_num_rows 

Вместо этого mysqli_execute и mysqli_num_rows.

+0

Это позаботилось об ошибке, спасибо! –

+0

Я также должен добавить, что ваш помог мне понять лучший синтаксис, который фактически сравнивал вход с БД и заставлял его делать то, что мне нужно. Я использовал 'mysqli_stmt_init',' mysql_stmt_prepare', а также 'mysql_stmt_store_result', который должен был быть до того, как я получил количество строк. После этого количество строк не было равным нулю! Большое спасибо! –

+1

Рад, что он работает сейчас! –

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