6

私はこのコードを持っています:

$rows = array();
$res = mysql_query($someQuery);

if(!mysql_errno())
    while($row = mysql_fetch_assoc($res))
        $rows[] = $row;

$someQueryフォームに書き込む任意のクエリです。mysql_errno は、エラーを含む mysql クエリを作成したときにケースをキャッチします。しかし、「テーブル名から削除」クエリを実行すると、もちろんエラーではありませんが、同時に mysql_fetch_assoc が「警告: mysql_num_rows(): 提供された引数は有効な MySQL 結果ではありません」で失敗することがわかりました。 /blah/blah/file.php 行 x のリソース」。

私はマニュアルでそれを探してみました (多分私は盲目です...) しかし、 $res が有効な MySQL 結果リソースであるかどうかを確認するために使用できる関数はありますか?

4

6 に答える 6

7

if ($res)それがリソースであるかどうかを確認するために正常に動作するはずです。 is_resource()は、そのリソースが有効かどうかを判断します。

mysql_affected_rowsをチェックして、それがINSERT / UPDATE/etcであるかどうかを判断することもできます。

于 2009-04-23T19:14:42.917 に答える
3

とともに、それがMySQLリソースであるかどうかを確認するためにis_resource()使用できます。get_resource_type()

$res_type = is_resource($res) ? get_resource_type($res) : gettype($res);

if(strpos($res_type, 'mysql') === false) {
    echo 'Invalid resource type: ' . $res_type;
}

get_resource_type()接続タイプによっては、戻る"mysql link"場合があります。"mysql link persistent"

于 2011-07-09T15:17:53.147 に答える
2

mysql_query()返品trueなど、次のfalse方法で確認できます。

if($res) {
    // The query succeeded.
}
于 2009-04-23T19:15:30.200 に答える
2

解決策については、 http://www.lampdocs.com/blog/2010/10/how-to-check-that-a-php-variable-is-a-mysql-resource/を確認してください。お役に立てれば。

于 2010-10-15T10:11:45.873 に答える
0

おそらく、条件を次のように変更するだけです。

if(!mysql_errno() && @mysql_num_rows($res) > 0)

行がない場合、条件は失敗し、@は警告を抑制します。

于 2009-04-23T19:21:33.850 に答える
0

INSERT、UPDATE、DELETE、または DROP を介して実行すると、または(操作の成功に応じて)mysql_queryのみが返されます。truefalse

このインスタンスに含まれるリソースが何を期待しているのかわかりませんか?

影響を受ける行数が必要な場合は、 を使用できますmysql_affected_rows()

于 2009-04-23T19:14:40.153 に答える