2010-12-19 11 views
0

こんにちは私はmysqlを初めて使い、やりたいことがほしいと思っています。以下のsqlは、$ imgFileに対応するキャプション列の下にある惑星テーブルにエントリがある場合に機能します。私が持っている問題は、すべての$ imgFilesがデータベースにあるわけではないということです。これは、ケースライン3 $caption=mysql_result($data, '0')がこのエラーをスローする場合:データベースの列にvarが存在するかどうかをチェックし、何もしない場合はどうすればいいですか

警告:mysql_result()[function.mysql-result]:/ home/drawapl1/public_html/planetのMySQL結果インデックス3の行0にジャンプできません.php on line 3

$ imgFileが存在するところで$ captionだけを設定するように変更するにはどうすればよいですか?

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

$data=mysql_query($retrieveCaption); 

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

echo $caption; 
+4

これまでに9つの質問がありました。コードの書式設定を学ぶ時間です。 –

+0

フォーマットが気に入らないのは申し訳ありません。私がどこに間違っているかを指摘できれば多分改善できるかもしれない。私はかなり新しくコーディングしていますが、最近は趣味としてもっとやり始めました。 –

+0

彼は、このサイトの質問/回答のコードサンプルとしてコードの書式設定について話しています。これを行うには、コードサンプルを選択し、エディタの '{}'ボタンを押します。 – svens

答えて

1

をエスケープする必要がありますので、あなたは、SQLクエリにすべての入力をエスケープする必要があります。

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

ありがとうございました!最初のmysql_num_rows()を使用しました。 –

0

それが何かを発見した場合は前年比はMySQLを求めることができます:

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

何もありません場合は、mysql_resultを使用しないでください。

また、 '0'は0(文字列ではなくint)になります。また

:あなたはあなたがmysql_num_rows()で空の結果セットをキャッチすることができ$ imgFile

関連する問題