2009-08-26 5 views
0

私の質問は、私が戻したい行が存在することをどのように確かめることができるのですか?私はPHPの@オプションでそれを抑止したくない、または行が存在するかどうかを調べるためにすべてのクエリの前に行を数えさせたくありません。どのように私はエスケープすることができますMySQLの '行0ジャンプすることができませんエラー?

だから、このような単純なクエリです:

"SELECT `title`, `id` FROM `event` WHERE `id` = '234'"; 

は、テーブルはid 234で行を含めることはできません。

答えて

0

のようなものについて、あなたはおそらくフィールドをフェッチするmysql_result()を使用している何

。代わりにmysql_fetch_arrayを検討してください。フェッチする行がもうない場合はFALSEを返します。

<?php 
$mysql = mysql_connect('..', '..', '..') or die(mysql_error()); 
mysql_select_db('..', $mysql) or die(mysql_error()); 

$query = "SELECT `title`, `id` FROM `event` WHERE `id` = '234'"; 
$result = mysql_query($query, $mysql) or die(mysql_error()); 
$row = mysql_fetch_array($result, MYSQL_ASSOC); 

if (!$row) { 
    echo 'no such record'; 
} 
else { 
    echo $row['title'], ' ', $row['id']; 
} 
+0

Gotcha!問題のヘルプに感謝します。そうでなければ、mysql_fetch_arrayがうまく動作していれば、mysql_resultのポイントは何ですか? – fabrik

+0

ほとんどの場合fetch_arrayが唯一の例外ですSELECT count(*)FROM xyzのように、正確に1つのレコードと1つまたは2つのフィールドを返すことが保証されているクエリです(mysql_result()を使用することがあります)。 php/mysqlをもう使用しないでください;-) – VolkerK

+0

説明をありがとう。はい、COUNTは典型的なmysql_result-queryタイプです。できる限り頻繁にmysql_resultを使用している場合は、MySQLの負荷を軽減できます。問題のサイトはmysql_resultを頻繁に使用しているため、異なるクエリメソッドに起因する競合を排除するためにクエリをチェックする必要があります。 – fabrik

1

すべてのクエリの前に行を数える必要はありません。通常は後で行います。この

$query = "SELECT `title`, `id` FROM `event` WHERE `id` = '234'"; 

$results = mysql_query($query); 

if (mysql_num_rows($results)) { 
    // do something because it was found 
} 
+0

これは最も簡単な解決策ですが、以前は正常に機能したクエリでエラーが発生するため、何かが間違っています。 : – fabrik

+0

エラーコードの一部を投稿できますか? – alex

関連する問題