[英]Compare values from array mysql php
嗨,我正在尝试使用此查询比较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;
我在$session
上有值1,2,3
,在$data1
上有值1,4,5
,因此$session
和$data1
之间的比较应该返回true,因为它们都具有值1,但是我什么也没得到结果。
实际上,只有两个数组相同时,它才有效,例如$session = 1,2,3
和$data1 = 1,2,3
我究竟做错了什么?
您使用IN子句错误; 简而言之,而不是
WHERE value IN (column)
正确的用法是:
WHERE column IN (value, value, value)
反过来这对您尝试执行的操作没有帮助( 有关IN子句的更多信息 )。 相反,请尝试以下操作:
foreach ($final_id as $key => $id) {
if ($id > 0) {
$sql .= "$column_name LIKE %$id,%";
if ($key < $count_data - 1) {
$sql .= "OR ";
}
}
}
}
这应该可以,但是您需要注意几件事。 首先,您可能容易受到SQL注入的攻击 ,其次,您应该考虑对数据库中的数据使用不同的方案,因为使用LIKE %%搜索数值是浪费的,或者预先从数据库和数据库中获取条目。搜索结果字符串。 考虑一下上面的代码,但应该避免快速而肮脏的hack :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.