Если ваша единственная цель – проверить, существует ли строка в php (true или false) , каков наилучший способ сделать это?
Опция 1?
$result = mysql_query("SELECT * FROM users WHERE id = '1'"); $num_rows = mysql_num_rows($result); if ($num_rows == 1) // one user, like it should be. else // do something else
Вариант 2?
$query = mysql_query("select count(1) from users where id = 1") if (mysql_result($query, 0) == 1) // one user, like it should be. else // do something else
Вариант 3?
$query = mysql_query("something like SELECT EXISTS( SELECT */1/COUNT(*)/etc. ...)") if (mysql_result($query, 0) == 1) // one user, like it should be. else // do something else
Beter вариант 4?
вы называете это.
подвопросы
COUNT(*), COUNT(1) or COUNT(id)
? Вариант 3 – это самый быстрый способ проверить, существует ли строка, если вы используете MySQL:
$query = mysql_query("SELECT EXISTS(SELECT 1 FROM users WHERE id = 1)") if (mysql_result($query, 0) == 1) // one user, like it should be. else // do something else
Я думаю, что вопрос относится скорее к самому коду, а затем к времени, поэтому, используя его запрос:
$result = mysql_query("SELECT * FROM users WHERE id = '1'"); //if result not returned(false) from Mysql return False Else True //This is just example and you can do anything you need in side the if() if(!$result) { //or return some error or redirect to another piece of code return FALSE; } else { //or do some other php/mysql magic //if there is a result you have the row to work with of needed return TRUE; }
mysql_query
… выдержка из руководства PHP Возвращаемые значенияДля SELECT, SHOW, DESCRIBE, EXPLAIN и других операторов, возвращающих набор результатов, mysql_query () возвращает ресурс с успехом или FALSE при ошибке.
Для других типов операторов SQL INSERT, UPDATE, DELETE, DROP и т. Д. Mysql_query () возвращает TRUE при успешном завершении или FALSE при ошибке.
EXISTS
быстрее, чем SELECT COUNT(*)
потому что подзапрос прекратит поиск, когда найдет одну строку. Ему не нужно будет находить их всех и считать их. Он вернет либо 0, либо 1:
SELECT EXISTS ( SELECT * FROM ... )