复杂的Mysql查询 - PHP

时间:2013-10-24 02:27:57

标签: php mysql sql arrays

这对其他人来说似乎并不复杂,但对我而言。

我有一个使用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']将存储此NO

如果号码未存储在$secondArray表格中,如何将ids存储到{{1}}?

1 个答案:

答案 0 :(得分:0)

首先根据$IdArray

中的值填写数组
$secondArray = array_fill_keys($IdArray, "NO");

然后使用您的查询和循环将元素更改为表中存在的每一行的YES

while ($row = mysql_fetch_array($results) {
    $secondArray[$row['id']] = "YES";
}