2015-10-13 4 views
2

Мне нужен запрос к базе данных, которая проверяет номер в user_ref. Если user_ref равно 5, то отрицается.MySQL неправильный запрос

Код:

if(!empty($_GET['ref'])){ 
    $resultt = mysql_query("SELECT `user_id` FROM `users` WHERE `user_name` = '{$_GET['ref']}' AND user_ref < 5 LIMIT 1"); 
    if(mysql_num_rows($resultt) > 0) { 
+0

Ваш вопрос сказал, что вы только хотите, чтобы отрицать user_ref когда она равна 5. Почему в запросе, вы используете 'user_ref <5'? Разве это не должно быть 'user_ref = 5' – invisal

+0

Привет Ким Бум. ;-). Вы действительно получаете mysql-ошибку 1064? MySQL не «отрицает» как таковой, но он может возвращать нулевые строки, как это будет делать с вашим текущим запросом, если user_ref = 5 (потому что ваш запрос будет только найти результаты, если user_ref НИЖЕ 5. – Martin

ответ

0

Использование подготовленных заявлений mysql_query() осуждается. Например PDO:

<?php 
$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password'); 
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 

$user_ref = $_GET['ref']; 
$stmt = $db->prepare("SELECT user_id FROM users WHERE user_name = :user_ref AND user_ref < 5 LIMIT 1"); 
$stmt->bindValue(':user_ref', $user_ref, PDO::PARAM_INT); 
$stmt->execute(); 
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 

$row_count = $stmt->rowCount(); // Returned rows.. 

foreach($rows as $row) { 
    // I think this doesn't need any explanation 
} 
?> 
+0

Когда я получил: http: //pastebin.com/nJ1CKL0L У меня есть ошибка: Ошибка синтаксиса: неожиданный '{' –

+0

Бад не копирует старый sql, исправляет его, заменяет '{$ _GET [' ref ']}' с правильным именем столбца 'user_ref' – C1sc0

+0

'{$ _GET [' ref ']}' является переменной из url –

1

использования <>

SELECT `user_id` FROM `users` WHERE `user_name` = '{$_GET['ref']}' AND user_ref <> 5 LIMIT 1" 
+0

Если user_ref равно 5, тогда ему будет отказано, оно должно быть user_ref = 5, как указано invisal. –