Php 当索引不';不匹配
我有两个mySQL查询,它们从我的数据库中提取数据。在不太详细的情况下,在运行查询之后,在分配给数组时,这两个查询的结果应该是相关的(即,由于sql查询的性质,array1[x]和array2[x]应该通过x偏移量进行相关) 但是,如果其中一个查询返回的值小于或大于另一个查询,则偏移量将关闭,从而导致for循环比较(在下面的代码段末尾)出现错误,那么这就不够健壮 两个数组中的['companyid']都是固定的,不会改变,所以有没有办法使数组的索引变为固定的,并通过它循环进行比较?注意,['companyid']可以是任何非序列号Php 当索引不';不匹配,php,mysql,Php,Mysql,我有两个mySQL查询,它们从我的数据库中提取数据。在不太详细的情况下,在运行查询之后,在分配给数组时,这两个查询的结果应该是相关的(即,由于sql查询的性质,array1[x]和array2[x]应该通过x偏移量进行相关) 但是,如果其中一个查询返回的值小于或大于另一个查询,则偏移量将关闭,从而导致for循环比较(在下面的代码段末尾)出现错误,那么这就不够健壮 两个数组中的['companyid']都是固定的,不会改变,所以有没有办法使数组的索引变为固定的,并通过它循环进行比较?注意,['co
*SQL Query*
while ($row = $result->fetch()) {
$pastcompanies[] = array(
'companyid' => $row['id'],
'name' => $row['name'],
'contactid' => $row['contactid'],
'firstname' => $row['firstname'],
'lastname' => $row['lastname'],
'email' => $row['email']
);
}
*SQL Query*
while ($row = $result->fetch()) {
$nowcompanies[] = array(
'companyid' => $row['id'],
'name' => $row['name'],
'contactid' => $row['contactid'],
'firstname' => $row['firstname'],
'lastname' => $row['lastname'],
'email' => $row['email']
);
}
for ($x=0;$x<count($pastcompanies);$x++){
if ($pastcompanies[$x]['contactid']!=$nowcompanies[$x]['contactid']){
echo $pastcompanies[$x]['firstname']." has been replaced by "
.$nowcompanies[$x]['firstname'];
}
}
*SQL查询*
而($row=$result->fetch()){
$PastCompanys[]=数组(
'companyid'=>$row['id'],
'name'=>$row['name'],
'contactid'=>$row['contactid'],
“firstname”=>$row[“firstname”],
'lastname'=>$row['lastname'],
'email'=>$row['email']
);
}
*SQL查询*
而($row=$result->fetch()){
$nowCompanys[]=数组(
'companyid'=>$row['id'],
'name'=>$row['name'],
'contactid'=>$row['contactid'],
“firstname”=>$row[“firstname”],
'lastname'=>$row['lastname'],
'email'=>$row['email']
);
}
对于($x=0;$x),与执行比较的数据库查询相比,对数组进行比较是缓慢、不必要和不安全的。使用join
比较两个表的查询更健壮
SELECT * FROM companies c
JOIN past_companies pc
ON pc.companyid = c.companyid
WHERE pc.contactid != c.contactid;
上面的这段代码应该为您提供一个结果集,其中所有的名字都与以前不同。这样就不需要在php上比较数组。请注意,这段代码只是在数据库上进行比较的示例。您不能在数据库上运行此比较查询吗?SQL设计用于进行此类比较。$PastCompanys[$row['id']]=array(
&$NowCompanys[$row['id']]]=array(
)?谢谢,你说得对,我应该在mySQL查询中这样做