这对其他人来说可能并不复杂,但对我来说是这样。
我有一个使用 IN
子句的 mysql 查询。它从与 PHP 数组匹配的表中收集所有数据。该数组称为 $IdArray
。对于此示例,假设$IdArray
包含这些变量,['0','1','2','3']
。所以这是我使用查询的代码,
$secondArray = array();
function apply_quotes($item){
return "'" . mysql_real_escape_string($item) . "'";
}
$idQuotes = array_map('apply_quotes', $IdArray);
$query = "SELECT * FROM ids WHERE id IN (" . join(',', $idQuotes) . ")";
$results = mysql_query($query);
while($row = mysql_fetch_array($results)){
if($row['id']){
$secondArray[] = "YES";
}
else{
$secondArray[] = "NO";
}
}//end while loop
如您所见,我更改了$IdArray
,以便将其放入mysql_query()
函数中。现在$secondArray
是一个我试图存储响应的数组。我正在尝试做的是,如果存储在$IdArray
中的一个数字存储在ids
表中,则将YES
放入$secondArray
中。但是,如果$IdArray
中的数字未存储在ids
表中,则会将NO
存储到$storedArray
中。
举个小例子,(对于我想发生的事情)正如我之前所说,让我们说$IdArray
包含['0','1','2','3']
.表中ids
存储了数字1
和3
。因此,当运行查询时$storedArray
将包含此['NO','YES','NO','YES']
。
目前我的代码不这样做!它的作用是仅存储YES
当$IdArray
中的数字存储在ids
表中时。因此,当运行查询时(使用上面的相同变量),$secondArray
将存储此['YES','YES']
。
当数字未存储在ids
表中时,如何让它将NO
存储到$secondArray
中?
首先根据
$IdArray
中的值填写数组:
$secondArray = array_fill_keys($IdArray, "NO");
然后使用查询和循环将表中存在的每一行的元素更改为要YES
。
while ($row = mysql_fetch_array($results) {
$secondArray[$row['id']] = "YES";
}