2016-02-21 3 views
0

Я начинаю php-программист и попытался создать систему регистрации/входа в систему с базой данных. Система работает дома по последней версии phpmyadmin, но моя школа еще не обновила ее до последней версии (не беспокойтесь, это не домашняя работа). Проблема в том, что в школе mysql_num_rows возвращает 0, когда я пытаюсь войти, но возвращает 1, когда я пытаюсь войти в систему дома. Мой учитель сказал, что версия phpmyadmin может вызвать эту проблему. Версия в школе: 4.5.2.Функция mysql_num_rows возвращает 0 в более старой версии phpmyadmin

Вот мой login.php файл:

<?php 
include('connect.php'); 

session_start(); 
$error = ""; 
$emailaddress = $_POST["emailaddress"]; 
$password = $_POST["password"]; 
if(empty($emailaddress) || empty($password)){ 
    $error = "Email or password is invalid!"; 
    echo $error; 
} 
else{ 
    $queryforlogin = mysql_query("SELECT * FROM users WHERE emailaddress='$emailaddress' AND password='$password'"); 
    $rows = mysql_num_rows($queryforlogin); 

    if($rows==1){ 
     $_SESSION['login_user'] = mysql_query("SELECT firstname FROM users WHERE emailaddress='$emailaddress'"); 
     $username = mysql_fetch_array($_SESSION['login_user']); 
     echo "Welcome, " . $username['firstname'] . "!"; 
    } 
    else{ 
     $error = "Email or password not found!"; 
     echo $error; 
    } 
    mysql_close($connect); 
} 

?> 

Если я нажимаю кнопку для входа на веб-странице, он дает мне ошибку: Email или пароль не найден! (последний else-statement). Он выполняет код в файле, но не выполняет код под if ($ rows == 1). Есть ли что-нибудь, что я могу сделать, чтобы этот код работал? Опять же, этот код действительно работает дома, но не в школе в более старой версии. Я спросил своего учителя, может ли он обновить phpmyadmin, но другие классы работают с phpmyadmin прямо сейчас, так что это невозможно. Надеюсь, вы поймете мой вопрос. Извините за мой английский, это не мой родной язык.

+0

@JohnAnkanna Что вы изменили в запросе? Разве это не то же самое? –

+0

Проверьте, сколько пользователей у вас есть в базе данных с проверенной почтой и паролем, т. Е. Существует ли возможность $ rows быть более 1? и что-то еще - в первом наборе результатов у вас уже есть данные пользователя (имя), поэтому нет необходимости делать другой вызов db. – mitkosoft

+0

@mitkosoft Это может быть проблема. Я заметил, что при старшей версии в школе, Auto Increment id не сбрасывается до 1, когда я удаляю всех пользователей в таблице. Возможно, пользователи «все еще там», но просто невидимы. Может ли это так? –

ответ

0

Вы только один раз попробовать, как это путем передачи переменной mysql_connect соединения в mysql_query, так что вы можете получить строки

<?php 

$link = mysql_connect("localhost", "mysql_user", "mysql_password"); 
mysql_select_db("database", $link); 

$result = mysql_query("SELECT * FROM table1", $link); 
$num_rows = mysql_num_rows($result); 

echo "$num_rows Rows\n"; 

?> 
0

Позволяет получить что-то прямо из летучей мыши, PhpMyAdmin не имеет ничего общего с mysql_num_rows возвращения какой бы она возвращается, PHPmyadmin - это просто инструмент для управления базой данных, к которой привязан сервер, все происходит на вашей стороне сервера.

Я думаю, что у вас нет одинакового имени пользователя и пароля в вашей таблице в базе данных вашей школы, и поэтому mysql_num_rows() возвращает 0, что и должно делать, когда запрос не дает никаких результатов, Или это может быть так, что ваш запрос возвращает более 1 результат, в этом случае условие снова не сработает ($ rows == 1).

+0

Система входа использует $ _POST [""] с переменными. Я использую другую базу данных дома, что означает, что я использую разные учетные данные для входа в систему дома. Поскольку у меня есть база данных дома и база данных в школе, я создал файл внешнего подключения, чтобы я мог управлять различными базами данных. Проще говоря, файл подключения в школе отличается от дома. –

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