复杂的Mysql查询 - PHP


Complicated Mysql query - PHP

这对其他人来说可能并不复杂,但对我来说是这样。

我有一个使用 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存储了数字13。因此,当运行查询时$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";
}