Как проверить, возвращает ли 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; } 

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

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

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

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

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

может быть упрощена до:

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

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

 $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! } 

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

 $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; 

как насчет этого:

 $query = "SELECT EXISTS (SELECT * FROM goals WHERE goal_ID='$obj_id' AND user_ID='$user_id')"; return mysql_query($query) ? false : true; 
 mysql_result(mysql_query("SELECT EXISTS (SELECT * FROM goals WHERE goal_ID='$obj_id' AND user_ID='$user_id')"),0);