比较数组mysql php中的值

时间:2012-07-02 19:39:21

标签: php mysql arrays

您好我正在尝试将2个数组的值与此查询进行比较,这是我所知道的唯一方法:

$session = "1,2,3,"
$table_name = "table1";
$column_name = "data1"; // value for test is 1,4,5,
$sql = "";
$sql .= "SELECT * FROM $table_name WHERE ";
$franquia = array();
$franquia = explode(",", $session);
if (!empty($franquia)) {

$final_id = array();
foreach ($franquia as $val) {
    if (trim($val) != '') {
        $final_id[] = $val;
    }
}

$count_data = count($final_id);
foreach ($final_id as $key => $id) {
    if ($id > 0) {
        $sql .= " $id IN ($column_name) ";
        if ($key < $count_data - 1) {
            $sql .= "OR ";
        }
    }
}
}


echo $sql; 

1,2,3上的$session1,4,5 $data1上的值$session,因此$data1$session = 1,2,3之间的比较可以归结为真实到期他们俩都有价值1,但我没有得到任何结果。

实际上只有两个数组都相同才有效,例如$data1 = 1,2,3和{{1}}

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您正在使用IN子句错误;简而言之,而不是

WHERE value IN (column)

正确用法是:

WHERE column IN (value, value, value)

这反过来对你要做的事情没有帮助(more about the IN clause)。相反,请尝试以下方法:

foreach ($final_id as $key => $id) {
    if ($id > 0) {
        $sql .= "$column_name LIKE %$id,%";
        if ($key < $count_data - 1) {
            $sql .= "OR ";
        }
    }
}
}

这应该可行,但有几点你应该注意。首先你可能是vulnerable to SQL Injections,其次你应该考虑在你的数据库中使用不同的方案和数据,因为使用LIKE %%搜索数值是一种浪费,或提前从数据库获取条目并在结果字符串中搜索。考虑上面的代码,除了你应该避免的快速和肮脏的黑客:)