2013-09-27 2 views
0

Новичок здесь. У меня возникают проблемы с моим кодом в php с использованием mysqli. Я установил ограничения на 1, но когда я попытался сделать некоторые тесты, например, поместить эхо в mysqli_stmt_num_rows ($ stmt); чтобы увидеть, действительно ли это что-то принесло ... но в итоге получилось 0. Я действительно не знаю, что делать дальше. Надеюсь, кто-то может мне помочь.Mysqli Проблемы с результатами

Вот мой Войти код:

<?php 
$con = mysqli_connect("localhost", "root", "", "pamsignup") 
or die('error in connection'.mysqli_connect_error()); 

    if(isset($_POST['login'])){ 

    $stmt = mysqli_prepare($con, "SELECT username, password FROM registries    
     WHERE username=? AND password=? LIMIT 1"); 

    $username= $_POST['username']; 
    $password = $_POST['password']; 

    mysqli_stmt_bind_param($stmt, 'ss', $username, $password); 
    mysqli_stmt_execute($stmt); 
    mysqli_stmt_bind_result($stmt, $username, $password); 
    mysqli_stmt_fetch($stmt); 
    mysqli_stmt_store_result($stmt); 
    echo mysqli_stmt_num_rows($stmt); 
    if(mysqli_stmt_num_rows($stmt) == 1) 
    { 
     header('Location: PAM-home.php'); 
    } 
    else 
    { 
     //header('Location: PAM-login.php'); 
     echo 'Wrong Password'; 
    } 
     mysqli_stmt_close($stmt); 
    } 

?> 
+0

Ваш вопрос заголовок вводит в заблуждение. Это проблема результатов, а не проблема входа. –

+0

Если вы получите 0 строк назад, запрос не дал никаких результатов: учетной записи не существует, или имя пользователя и/или пароль были неверными. –

+0

@MarcB я даже пытался иметь имя пользователя и пароль, используя одну букву, но все же возвращает 0 строк. – user12345654

ответ

0
<?php 
error_reporting(E_ALL); 
if(isset($_POST['username'])) 
{ 
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 
    $con = mysqli_connect("localhost", "root", "", "pamsignup") 

    $sql = "SELECT 1 FROM registries WHERE username=? AND password=?"; 
    $stmt = mysqli_prepare($con, $sql); 

    mysqli_stmt_bind_param($stmt, 'ss', $_POST['username'], $_POST['password']); 
    mysqli_stmt_execute($stmt); 
    mysqli_stmt_store_result($stmt); 
    if(mysqli_stmt_num_rows($stmt)) 
    { 
     header('Location: PAM-home.php'); 
    } 
    else 
    { 
     //header('Location: PAM-login.php'); 
     echo 'Wrong Password'; 
    } 
} 
+0

Объяснение OP окажется полезным, что вы делали в отношении дополнений/удаляет/изменяет код. –

+0

@ Fred-ii- i попытался повторить часть mysqli_stmt_num_rows ($ stmt), он возвращает значение 0. Почему? :( – user12345654

+0

@RedSparkle Это не мой код/​​ответ. что без каких-либо объяснений, вне меня. Я думаю, что он добавил только код сообщения об ошибках, а также то, что у вас было для 'SELECT username, password FROM registers'. Какая связь вашей формы с' if (isset ($ _ POST ['login' ])) {' –

0

Если вы планируете работать с использованием только MySQLi & PHP, попытайтесь взглянуть на DALMP (www.dalmp.com) соединение сделано в этой линии:

https://github.com/nbari/DALMP/blob/master/src/DALMP/Database.php#L146

Вы можете проверить код, чтобы увидеть, как подготовленные заявления обрабатываются, например, здесь:

https://github.com/nbari/DALMP/blob/master/src/DALMP/Database.php#L367

Надежда, которая может дать вам идею.

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