ホームページ >バックエンド開発 >PHPチュートリアル >mysql_query($sql) はブール値またはリソース ID を返しますか? それを解決するにはどうすればよいですか?

mysql_query($sql) はブール値またはリソース ID を返しますか? それを解決するにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-06-13 13:38:321115ブラウズ

mysql_query($sql) はブール値またはリソース ID を返しますか?

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
<?php

$sql = "SELECT * FROM UserInfo WHERE id=222";
$sql2 = "SELECT TOP 1 * FROM UserInfo WHERE id=222";


mysql_connect("localhost", "root", "");

mysql_select_db("MYDB");

$result = mysql_query($sql);
if (!$result){
echo( "the user not exist" .mysql_query($sql));
}else{
echo( "ok ,the user exist".mysql_query($sql) );
} 
?>


SQL が使用されている場合、出力は問題なく、ユーザーは存在しますリソース ID #4
if sql2 を使用すると、出力は「ユーザーが存在しません」です

id = 222 のデータはデータベースに存在しないと述べておきます。なぜこのような結果になるのでしょうか。
SQL でクエリを実行すると、リソース ID が返されます。SQL2 でクエリを実行すると、ブール値が返されます。



-----解決策---------------------------- ----
クエリ 成功すると、結果の数とは関係のないリソース ID が返されます。
mysql_num_rows を使用して、クエリ結果の行数を取得します。
------解決策---------
$result=mysql_query($sql);

if (!$mysql_num_rows($result)){
echo( "ユーザーが存在しません" );
}else{
echo( "ok、ログイン成功);
}
------解決策---------
PHP コード

mysql_query – MySQL クエリを送信する

説明する

resource mysql_query ( string $query [, resource $link_identifier ] )
mysql_query() 指定された接続識別子に関連付けられたサーバー内の現在アクティブなデータベースにクエリを送信します。 link_identifier が指定されていない場合は、最後に開かれた接続が使用されます。開いている接続がない場合、この関数はパラメータなしで mysql_connect() 関数を呼び出し、接続を確立して使用しようとします。クエリ結果はキャッシュされます。

注記:

クエリ文字列はセミコロンで終わってはいけません。

mysql_query() は、SELECT、SHOW、EXPLAIN、または DESCRIBE ステートメントの場合のみリソース識別子を返し、クエリが正しく実行されなかった場合は FALSE を返します。他のタイプの SQL ステートメントの場合、mysql_query() は成功時に TRUE を返し、エラー時に FALSE を返します。 FALSE 以外の戻り値は、クエリが有効であり、サーバーによって実行できることを意味します。これは、影響を受ける行数または返される行数については何も示しません。 クエリが正常に実行されたものの、行に影響を与えなかったり、行が返されなかったりする可能性があります。

次のクエリは構文的に正しくないため、mysql_query() は失敗し、FALSE を返します。

例1 mysql_query() の例
<php
$result = mysql_query("SELECT * WHERE 1=1")
    または die("無効なクエリ: " .mysql_error());
?>
my_col がテーブル my_tbl 内の列ではない場合、次のクエリは意味的に正しくないため、mysql_query() は失敗し、FALSE を返します。

例2 mysql_query()
<?php
$result = mysql_query("my_tbl から my_col を選択")
    または die("無効なクエリ: " .mysql_error());
?>
クエリステートメントで参照されているテーブルにアクセスする権限がない場合、mysql_query() は FALSE を返します。

クエリが成功したと仮定すると、mysql_num_rows() を呼び出して SELECT ステートメントに対して返された行数を確認したり、mysql_affected_rows() を呼び出して DELETE、INSERT、REPLACE、または UPDATE ステートメントに対して影響を受けた行数を確認したりできます。

SELECT、SHOW、DESCRIBE、または EXPLAIN ステートメントの場合のみ、mysql_query() は新しい結果識別子を返します。これは、mysql_fetch_array() および結果テーブルを処理する他の関数に渡すことができます。結果セットの処理後、mysql_free_result() を呼び出すことで結果セットに関連付けられたリソースを解放できますが、メモリはスクリプトの実行後に自動的に解放されます。

mysql_num_rows()、mysql_affected_rows()、mysql_unbuffered_query()、mysql_free_result()、mysql_fetch_array()、mysql_fetch_row()、mysql_fetch_assoc()、mysql_result()、mysql_select_db()、および mysql _connect() を参照してください。 。 <div class="clear"></div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。