2013-10-03 2 views
0

У меня есть этот кусок кода:Если SQL не возвращает запросы

require_once('connectvars2.php'); //This is the connection to my database 
       $data = mysql_query("SELECT * FROM calzone ORDER BY id DESC"); 
       if (isset($_POST['submit'])) { 
       $post = trim($_POST['post']); 
       $data = mysql_query("SELECT * FROM calzone WHERE overskrift LIKE '%$post%' OR postnummer = '$post'"); 
        if (!(empty($data))) { // This is my poor attempt :-) 
        echo 'No result!'; 
        } 
       } 

Это моя функция поиска на моем сайте.

Я хочу, чтобы он возвращал что-то, если нет запросов, которые соответствуют поисковым словам. Скажем, если я напишу «6737», и база данных не найдет результатов, она должна напечатать «Извините, но результатов поиска не найдено!». Есть ли способ для MySQL проверить, были ли возвращены какие-либо запросы? а если нет, повторите какой-нибудь текст?

+0

Вы можете просто подсчитать строки, mysql_num_rows, но вам действительно не следует перетаскивать переменные в строку запроса, что очень опасно, подумайте о поиске в PDO. –

+0

['mysql_num_rows()'] (http://php.net/mysql-num-rows). Также [санируйте свои входы] (http://xkcd.com/327/) –

+0

Как мне заставить его не возвращать предупреждения? Это как-то связано с @ правильно? Я просто не знаю, где разместить его. – owwyess

ответ

1

Использовать mysql_num_rows Функция для подсчета нет. строк ..

$data = mysql_query("SELECT * FROM calzone WHERE overskrift LIKE '%$post%' OR postnummer = '$post'"); 
$num=mysql_num_rows($data); 
if($num==0) 
{ 
    echo 'Sorry, but theres no results for your search'; 
} 
1
require_once('connectvars2.php'); //This is the connection to my database 
       $data = mysql_query("SELECT * FROM calzone ORDER BY id DESC"); 
       if (isset($_POST['submit'])) { 
       $post = trim($_POST['post']); 
       $data = mysql_query("SELECT * FROM calzone WHERE overskrift LIKE '%$post%' OR postnummer = '$post'"); 
    if (mysql_num_rows($data) == 0){ 
     echo "Sorry, but there's no results for your search!"; 
    }else{ 
    echo "matched"; 
    } 

       } 
0

вы, вероятно, ищет mysql_num_rows

использования как этот

$data = mysql_query("SELECT * FROM calzone WHERE overskrift LIKE '%$post%' OR postnummer = '$post'"); 
if (mysql_num_rows($data) == 0) { 
    echo 'No result!'; 
} 

На стороне записки; вы используете функции mysql_XX для доступа к базе данных. Они были заменены Mysqli и MySQL (PDO). Используйте одну из этих библиотек до даты.

+0

Привет, я знаю, что это очень плохая практика, и сейчас я делаю логин с подготовленными операторами и mysqli, чтобы попрактиковаться в правильной форме. Но это всего лишь быстрый ремонт для одного из моих друзей. Я также задавался вопросом, если мне нравится распечатывать, что theres no row возвращается, как я могу остановить печать отказа возврата? Это как-то связано с @ правильно? Я просто не могу вспомнить, где его разместить. Спасибо – owwyess

+0

Я не уверен, что вы подразумеваете под возвратом отказа. '@' Будет игнорировать любые ошибки, генерируемые командой - http://php.net/manual/en/language.operators.errorcontrol.php. Его следует использовать с осторожностью, поскольку подавление ошибок без должной причины или, по крайней мере, регистрация может стать трудной для отладки. – Kami

+0

Да, но он приходит с ошибкой, потому что он не возвращает никаких запросов? Поэтому я должен удалить это, чтобы пользователь не смог увидеть эту ошибку, только сообщение, показанное, когда theres не обнаружено quieries – owwyess

1

использование

if(mysql_num_rows($data)==0){ 
    echo "Sorry, but there's no results for your search"; 
} 
0

использовать mysql_num_rows ($ данные) == 0

Хотя вы должны использовать mysqli и не MySQL, как MySQL является устаревшим в настоящее время

0

Прежде всего, вы должны не использовать mysql_ -функции, потому что это расширение PHP устарело. Попробуйте использовать вместо этого PDO или Mysqli.

Кстати, в этом расширении есть mysql_num_rowsfunction, который делает именно то, что вы хотите.

$data = mysql_query("SELECT * FROM calzone WHERE overskrift LIKE '%$post%' OR postnummer = '$post'"); 
if (!mysql_num_rows($data)) { 
    echo 'No result!'; 
} 
+0

Здравствуйте, я знаю, что это очень плохая практика, и сейчас я делаю логин с подготовленными операторами и mysqli, чтобы практиковать в правильной форме. Но это всего лишь быстрый ремонт для одного из моих друзей. Я также задавался вопросом, если мне нравится распечатывать, что theres no row возвращается, как я могу остановить печать отказа возврата? Это как-то связано с @ правильно? Я просто не могу вспомнить, где его разместить. Спасибо – owwyess

+0

@ user2826397 Да, @ - уникальный оператор управления ошибками, поддерживаемый PHP. При добавлении выражения в PHP любые сообщения об ошибках, которые могут быть сгенерированы этим выражением, будут игнорироваться. – zavg

2

Использование mysql_num_rows

$data = mysql_query("SELECT * FROM calzone WHERE overskrift LIKE '%$post%' OR postnummer = '$post'"); 
if(mysql_num_rows($data) > 0){ 
    //show your data 
} 
else{ 
    echo "Sorry, but there are no results for your search!"; 
} 

Кроме того, как уже упоминалось, mysql_query является устаревшим. Переключитесь на PDO.

Смежные вопросы