同じテーブル/データベースを2回クエリするJoomla環境内でphpスクリプトを開発しています。毎回、一致するものが見つかったかどうかを知る必要があります。
getNumRows() を使用するのが最善の方法のようです。Joomla のドキュメントは、その使用について非常に具体的です。
その他の結果セット メソッド getNumRows()
getNumRows() は、最後のクエリで検出され、読み取りを待機している結果行の数を返します。getNumRows() から結果を取得するには、クエリの後、結果を取得する前に実行する必要があります。
私はスクリプトでこれに従います。最初のクエリでは問題はありませんが、2 番目のクエリでは常に警告がスローされます。おそらく、2 回目の getNumRows() 呼び出しが最初のクエリから結果を取得した後であるためです。これは Joomla の要件に準拠していません。
解決方法はありますか?どうもありがとう!
問題の私のスクリプトの部分は次のとおりです。
$db = JFactory::getDBO();
$query = "SELECT * FROM #__art_mobiles WHERE user_agent_header='$ua'";
$db->setQuery($query);
$rowsAG = $db->getNumRows();
$replyAG = $db->loadRow();
if ($rowsAG == 0) {
//if no match check www.handsetdetection.com
//see https://www.handsetdetection.com/properties/vendormodel for current list of models in database together with headers
echo "not in local database - try external<br/>";
$prod = '';
if ($hd3->siteDetect()) {
$replyHD = $hd3->getReply();
$man = $replyHD['hd_specs']['general_vendor'];
$dev = $replyHD['hd_specs']['general_model'];
$os = $replyHD['hd_specs']['general_platform'];
echo "found in handsetdetection.com database<br/>";
//check for provisional match in local database
$query = "SELECT * FROM #__art_mobiles WHERE manufacturer='$man' AND device='$dev'";
$db->setQuery($query);
$rowsAGprov = $db->getNumRows();
$replyAGprov = $db->loadRow();
if ($rowsAGprov == 0) { **[ETC]**