Как проверить, существует ли var в столбце базы данных, и ничего не делать, если его нет - PullRequest
0 голосов
/ 20 декабря 2010

Привет, я новичок в mysql и надеюсь, что то, что я пытаюсь сделать, довольно легко. Sql ниже работает, когда есть запись в таблице планет под столбцом заголовка, соответствующая $ imgFile. У меня проблема в том, что не все мои $ imgFiles находятся в базе данных. Таким образом, в этом случае строка 3 $caption=mysql_result($data, '0') выдает эту ошибку:

Предупреждение: mysql_result () [function.mysql-result]: невозможно перейти к строке 0 индекса результатов MySQL 3 в /home/drawapl1/public_html/planet.php линии 3

Как мне изменить это так, чтобы он устанавливал только заголовок $ там, где существует $ imgFile?

$retrieveCaption="SELECT caption from planets where image='$imgFile'";

$data=mysql_query($retrieveCaption); 

$caption=mysql_result($data, '0');

echo $caption;

Ответы [ 2 ]

1 голос
/ 20 декабря 2010

Вы можете перехватить пустые наборы результатов с помощью mysql_num_rows().

if( mysql_num_rows($data) == 0 ) {
    // No results returned

или использовать функцию, которая не выдает предупреждение в таких случаях, например mysql_fetch_assoc().

$row = mysql_fetch_assoc($data);
if( $row ) {
    $caption = $row['caption'];
} else {
    $caption = "Default";
}
0 голосов
/ 20 декабря 2010

Yoy может спросить MySQL, нашел ли он что-либо:

if ( 0 < mysql_num_rows($data) ) { // results

Если результатов нет, не используйте mysql_result.

Также: '0' хочетбыть 0 (целое число вместо строки).

Также: вы должны экранировать все входные данные в запросы SQL, поэтому вы должны экранировать $ imgFile

...