2016-10-11 4 views
0

Итак, вот мой код.Заявление PHP & Mysql не работает?

$user_is_banned = "0"; 
$bancheck = mysql_query("SELECT * FROM ban WHERE `device` = '".$device_id."' OR WHERE `Ip` = '".$ip."'"); 
if ($bancheck && mysql_num_rows($bancheck) > 0) 
    { 
$user_is_banned = "1"; 
    } 

Но user_is_banned не меняется к 1, даже если один из этих критериев выполняется. Я немного в тупике.

+7

Первое и самое главное ** прекратить использование 'mysql_ *' **. Он устарел и уязвим для атак. Вместо этого вы можете использовать 'PDO' или' MySQLi'. –

+2

** ПРЕДУПРЕЖДЕНИЕ **: Если вы просто изучаете PHP, не используйте интерфейс ['mysql_query'] (http://php.net/manual/en/function.mysql-query.php). Это так ужасно и опасно, что он был удален в PHP 7. Замена, такая как [PDO, не трудно учиться] (http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps -pdo-for-database-access /) и руководство, подобное [PHP The Right Way] (http://www.phptherightway.com/), объясняет лучшие практики. Ваши пользовательские параметры ** не ** [правильно экранированные] (http://bobby-tables.com/php), и есть [SQL-инъекции ошибок] (http://bobby-tables.com/), которые могут быть использованы , – tadman

ответ

3

У вас есть 2 раза where в вашем заявлении, что не так. Правильный запрос:

mysql_query("SELECT * FROM ban WHERE `device` = '".$device_id."' OR `Ip` = '".$ip."'"); 

Вы не должны использовать deprectedmysql_* API. Вы должны использовать mysqli_ или PDO с подготовленными инструкциями, чтобы предотвратить внедрение SQL-инъекций.

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