Каков правильный способ проверки наличия необходимых данных в базе данных?
То, что я использую в настоящее время,
mysql_query("SELECT anyfield FROM table WHERE field='$data'");
а затем проверьте, не затронуты ли какие-либо строки.
Но я действительно не использую извлеченные данные в anyfield
. Несмотря на то, что использование ресурсов здесь так незначительно, каков правильный способ проверить, существуют ли данные в db без извлечения каких-либо других полей из таблицы?
Пусть база данных подсчитывает и извлекает данные подсчета из запроса.
$result = mysql_query('SELECT COUNT(*) FROM `table` WHERE `field` = ...'); if (!$result) { die(mysql_error()); } if (mysql_result($result, 0, 0) > 0) { // some data matched } else { // no data matched }
$result = mysql_query("SELECT `field` FROM `table` WHERE `field` = '".$data."'"); if (mysql_num_rows($result)){ // Rows exist }
ИЛИ
$result = mysql_query("SELECT COUNT(`field`) as count FROM `table` WHERE `field` = '".$data."'"); $row = mysql_fetch_array($result); if ($row ['count']){ // Rows exist }
Если бы я проверял данные, я бы гарантировал, что как можно меньше данных было возвращено.
Извлеките одно поле (обычно я делаю id
) и убедитесь, что вы используете LIMIT
, например. LIMIT 1
… если вы хотите узнать, существует ли какая-либо запись.
Поскольку вы используете переменную PHP для поиска записи, если она подходит для вашей ситуации, вы, возможно, можете сделать LEFT JOIN
на первой строке SQL, которая получает $data
, но это также может быть просто излишним для того, что вам нужно.