gpt4 book ai didi

php - 在 PHP 中比较行

转载 作者:行者123 更新时间:2023-11-29 01:54:58 25 4
gpt4 key购买 nike

您好,我想比较来自两个不同数据库的两个表。

第一个数据库中选择

$sql= mysqli_query ("SELECT * FROM emasa.staff_detail");
$row = mysqli_fetch_array($sql);

第二个数据库中选择

$sql2 = mysqli_query ("SELECT * FROM employee");
$row2 = mysqli_fetch_array($sql2);

然后我比较两个表

if ($row['icnum'] == $row2['emp_ic'])
{
echo "Data already exist in both database.";
}

else
{
while ($row = mysqli_fetch_assoc($sql))
{
echo "<td align='center' height='30'>" . $row ['name'] . "</td>";
echo "<td align='center'>" .$row['icnum'] . "</td>";
}
}

但我的问题是它只比较数据库中的第一行。

我的输出应该只显示其他数据库中不可用的员工姓名。然而,这是我的输出。

根据输出,它只比较第一行。那么我该如何更改我的代码以便它比较整行。请帮助我,谢谢!

最佳答案

您没有遍历查询结果。您只需回到第一行并继续。

例如:

$sql= mysqli_query ("SELECT * FROM emasa.staff_detail");

这将返回一个您需要使用的结果集

$row = mysqli_fetch_array($sql);

获取实际值。问题来了

$row = mysqli_fetch_array($sql);

本身只给你一行。

解决方案 1您必须使用这样的代码:

while($row = mysqli_fetch_array($sql))
{
//Do some comparison
}

由于您将不得不遍历两个不同的结果集,因此您将不得不在一个循环中进行一个循环,构建一个结果数组,然后循环遍历结果以输出您的 HTML。

例如:

while($row = mysqli_fetch_array($sql))
{
while($row2 = mysqli_fetch_array($sql2))
{
if ($row['icnum'] == $row2['emp_ic'])
{
//add to array of equal data
}
else
{
//add to array of not equal data
}
}
}

foreach($array as $not_equal_or_equal_data)
{
//output your desired HTML
}

解决方案 2根据您实际关心的内容,您可以执行这样的 sql 语句

$sql = "
SELECT
*
FROM
emasa.staff_detail AS sd
JOIN db2.employee AS e
ON sd.icnum = e.emp_ic";

这将返回这两列相等的所有行

关于php - 在 PHP 中比较行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31690371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com