Подтвердить что ты не робот

Как проверить, возвращает ли SELECT EXISTS значение или нет?

Я пытаюсь быстро определить, является ли user_ID владельцем "цели". Я считаю, что мой SQL-запрос хорош, но я пытаюсь найти хороший способ проверить результат!

В этом случае, независимо от того, что я положил для $obj_id или $user_id, моя функция возвращает true. Я предполагаю это, потому что mysql_num_rows считает даже ложный результат в виде строки? Итак, какой PHP-код я должен использовать, чтобы проверить, существует ли результат или нет?

Заметьте, что я хочу что-то короткое и элегантное! Я знаю, что я мог бы сделать это до конца (проверьте количество (*), верните mysql_assoc, затем проверьте значение счета...), но это длинный и уродливый.

Любые идеи? Спасибо!

$query = "SELECT EXISTS (SELECT * FROM goals WHERE goal_ID='$obj_id' AND user_ID='$user_id')";
if (@mysql_num_rows(mysql_query($query))!=1) {
    return false;
} else {
    return true;
}
4b9b3361

Ответ 1

Не беспокойтесь о EXISTS. Внутри строки всегда указывается одна строка, содержащая "true" или "false".

Вы ищете либо "нулевые строки", либо "по крайней мере одну строку", поэтому измените запрос на что-то вроде этого, а затем проверьте, сколько строк возвращается

SELECT 1 FROM goals WHERE goal_ID='$obj_id' AND user_ID='$user_id' LIMIT 1

Ответ 2

Мне нравится gbn ответить на лучшее, но я хотел бы указать, что это:

if (@mysql_num_rows(mysql_query($query))!=1) {
     return false;
} else {
     return true;
}

можно упростить до:

return @mysql_num_rows(mysql_query($query)) == 1;

Ответ 3

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

$sql = SELECT COUNT(*) FROM goals WHERE goal_ID='$obj_id' AND user_ID='$user_id'
$query = mysql_query($sql);
$result = mysql_fetch_row($query);

return $result[0] >= 1;

Ответ 4

Этот путь, вероятно, быстрее.

$query = "SELECT EXISTS (SELECT * FROM goals WHERE goal_ID='$obj_id' AND user_ID='$user_id')";

if(mysql_num_rows(mysqli_query($query)) < 1) {
   // Nothing found!
}

Ответ 5

что об этом:

$query = "SELECT EXISTS (SELECT * FROM goals WHERE goal_ID='$obj_id' AND user_ID='$user_id')";

return  mysql_query($query) ? false : true;

Ответ 6

mysql_result(mysql_query("SELECT EXISTS (SELECT * FROM goals WHERE goal_ID='$obj_id' AND user_ID='$user_id')"),0);