0

我需要使用 php 比较两个 mysql 记录集

比较第一个记录集中的记录存在于第二个记录集中并返回真值,如果不存在则返回假。

问题是一旦对记录集进行一次传递,它就不会返回到开头,因此我可以将 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 JOIN 检索结果。

参考这个加入..

http://www.sitepoint.com/understanding-sql-joins-mysql-database/

于 2013-05-17T12:44:57.990 回答
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

另一个提示是你不应该在 php.ini 中使用 mysql api 函数。自 PHP 5.5.0 起,这些功能已被弃用,您的代码在未来的 php 升级后将不再工作。我建议您查看使用PDO运行查询

于 2013-05-17T12:49:41.550 回答