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 サイトの他の関連記事を参照してください。