Не работает что то в муSQL

Рейтинг: 0Ответов: 1Опубликовано: 19.01.2015

Вот часть кода:

$T_registered_users = mysql_query("SELECT is_login FROM registered_users WHERE is_login = '$_POST[login]'", $db);
$MT_registered_users = mysql_fetch_array($T_registered_users);
if($MT_registered_users['is_login']) $error_login = 'Введеный логин уже зарегистрирован.';

Выдает ошибку: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in X:\home\ua-torrents.com\www\registration\index.php on line 32

Вопрос что за ошибка и из за чего?

Ответы

▲ 1

Пишите переменные в едином стиле:

// before:
$T_registered_users

// after:
$t_registered_users

// best:
$result

У вас mysql_query скорее всего вернуло false.

Необходима проверка:

if ($result === false) {
    echo mysql_error();
}

Не используйте процедурный подход для доступа к СУБД, ибо deprecated. Прочитайте, что написано в красной рамке на оф.сайте.

Как правильно (почитайте "Почему стоит пользоваться PDO"):

$dbname = 'test';
$username = 'user';
$password = 'pass';
$table = 'registered_users';
$is_login = (int)$_POST['login']; // какого типа данные вы здесь ожидаете?

try {
    //** Соединение с СУБД **//

    $pdo = new \PDO("mysql:host=localhost;dbname={$dbname};charset=utf8;", $username, $password);
    $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);

    //** exists **//

    $sql = "SELECT is_login FROM {$table} WHERE is_login = :is_login";
    $statement = $pdo->prepare($sql);
    $statement->execute(array('is_login' => $is_login));
    if ($statement->fetchColumn()) {
        $error_login = 'Введеный логин уже зарегистрирован.';
    }

} catch(\PDOException $e) {
    echo $e->getMessage(); // display error
}