ホームページ  >  記事  >  バックエンド開発  >  PHP 警告: mysql_num_rows() はパラメーターの解決を期待しています

PHP 警告: mysql_num_rows() はパラメーターの解決を期待しています

PHPz
PHPzオリジナル
2023-06-24 22:07:431582ブラウズ

PHP は、Web 開発に広く使用されているオープンソース スクリプト言語であり、多くの Web アプリケーション (WordPress など) はデータの保存と取得を MySQL データベースに依存しています。ただし、mysql_num_rows() 関数を使用すると、次の警告が表示されることがあります。

PHP 警告: mysql_num_rows() は、パラメーター 1 がリソースであることを期待しており、指定されたブール値...

この記事の内容、この問題の原因と解決方法について説明します。

mysql_num_rows() 関数とは何ですか?

mysql_num_rows() 関数は、MySQL クエリから取得される行数を取得するために使用されます。結果セット リソースをパラメータとして受け取り、行数を返すか、エラーが発生した場合は false を返します。以下に例を示します。

$result = mysql_query("SELECT * FROM mytable");
$num_rows = mysql_num_rows($result);
echo "Rows: ".$num_rows;

これは、mytable テーブルから取得された行数を返します。ただし、結果セットがリソースではない場合は、次の警告が表示されます。

PHP 警告: mysql_num_rows() は、パラメータ 1 がリソースであることを期待しています。ブール値が指定されています...

なぜ "ブール値"与えられた」と表示される「警告しますか?

この問題は通常、SQL クエリの失敗によって発生します。 mysql_query() 関数を使用すると、クエリが失敗したことを示す false が返されることがあります。この結果をパラメータとして mysql_num_rows() 関数に渡すと、期待される結果セット リソースではなくブール値として解釈されます。そのため、「PHP 警告: mysql_num_rows() はパラメーター 1 がリソースであることを期待しています。... で与えられたブール値です。」という警告がコンソールに表示されます。

「ブール値が指定されました」という警告を解決するにはどうすればよいですか?

この問題を解決するには、mysql_num_rows() 関数を使用する前に SQL クエリが成功したことを確認する必要があります。 mysql_query() 関数の結果は次のように確認できます:

$result = mysql_query("SELECT * FROM mytable");
if($result){
$num_rows = mysql_num_rows( $result );
echo "Rows: ".$num_rows;
}

これにより、クエリが正常に実行された後にのみ mysql_num_rows() 関数が使用されるようになります。

もう 1 つの方法は、MySQLi 拡張機能または PDO (PHP データ オブジェクト) を使用して MySQL データベースに接続し、クエリを実行することです。 MySQLi 拡張機能は MySQL データベースへのアクセス方法を改善し、PDO を使用してさまざまな種類のデータベース (MySQL、PostgreSQL、SQLite など) に接続してクエリを実行できます。

次は MySQLi を使用した例です:

$conn = mysqli_connect("localhost","username","password","dbname");
if (!$conn ) {
die("接続できませんでした: ".mysqli_error($conn));
}

$result = mysqli_query($conn,"SELECT * FROM mytable");
if($result){
$num_rows = mysqli_num_rows($result);
echo "Rows: ".$num_rows;
}

さらに、PDO は、簡単に実行できる-use 安全なデータベース アクセス方法:

$conn = new PDO("mysql:host=localhost;dbname=myDB","username","password");
$result = $conn- > ;query("SELECT * FROM mytable");
if($result){
$num_rows = $result->rowCount();
echo "行: ".$num_rows;
}

概要

mysql_num_rows() 関数使用時の「ブール値が指定されました」という警告は、通常、SQL クエリの失敗によって発生します。この問題を解決するには、mysql_num_rows() 関数を使用する前にクエリが成功したことを確認するか、MySQLi 拡張機能や PDO などの別の MySQL データベース アクセス方法を使用する必要があります。

以上がPHP 警告: mysql_num_rows() はパラメーターの解決を期待していますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。