0

PHPを使用して2つのmysqlレコードセットを比較する必要があります

最初のレコードセットのレコードを比較すると、2 番目のレコードセットに存在し、true 値が返されるか、存在しない場合は false が返されます。

問題は、レコードセットの単一のパスを実行すると、最初に戻らないため、recordset1 の残りのレコードを比較できることです。

私が使用しているコードは次のとおりです。

*mysql_select_db($database_db, $db);

$query_rec_teams = "SELECT tbl_items.* FROM tbl_items;";
$rec_items = mysql_query($query_rec_items, $db) or die(mysql_error());

$row_rec_items = mysql_fetch_assoc($rec_items);
$totalRows_rec_items = mysql_num_rows($rec_items);

$query_rec_itemsLeft = "(SELECT tbl_itemsleft.* FROM tbl_itemsLeft";
$rec_itemsLeft = mysql_query($query_rec_itemsLeft, $db) or die(mysql_error());
$row_rec_itemsLeft = mysql_fetch_assoc($rec_itemsLeft);
$totalRows_rec_itemsLeft = mysql_num_rows($rec_itemsLeft);

//iterate first recordset, populate variables
do{ 
    $itemPresent=0;
    $item=$row_rec_item['ItemID'];
    //iterate second recordset and compare item variable with itemID fields in recordset, if exist echo true, else echo false
    do { 
            if ($row_rec_itemsLeft(['ItemID'] == $item){
                itemPresent=1;
            }
            else{
                itemPresent=0;
            }
        echo itemPresent;
    } while ($row_rec_itemsLeft = mysql_fetch_assoc($rec_itemsLeft));

} while ($row_rec_items = mysql_fetch_assoc($rec_items));

mysql_free_result($rec_itemsLeft);
mysql_free_result($rec_items);
?>*

レコードセットを配列に移入し、代わりに配列を比較する方が簡単でしょうか?

助けて感謝

4

2 に答える 2

0

これを行うには、MYSQL 結合を使用する必要があります。両方にあるアイテムのみを表示する場合:

SELECT * 
FROM tbl_items
     INNER JOIN tbl_itemsLeft 
     ON tbl_items.ItemID=tbl_itemsLeft.ItemID

tbl_items のすべてのアイテムを表示して、tbl_itemsLeft と一致するものと一致しないものを確認したい場合は、LEFT JOIN を実行できます。tbl_itemsLeft IS NULL を持つものはすべて、tbl_itemsLeft テーブルに一致しないレコードになります。

SELECT * 
FROM tbl_items 
     LEFT JOIN tbl_itemsLeft 
     ON tbl_items.ItemID=tbl_itemsLeft.ItemID

もう 1 つのヒントは、php で mysql API 関数を使用しないことです。これらは PHP 5.5.0 の時点で非推奨の関数であり、将来の php のアップグレード後にコードが機能しなくなります。PDOを使用してクエリを実行することをお勧めします

于 2013-05-17T12:49:41.550 に答える