我的表格如下:
我在这里通过查询获得结果:
$subject_ids = implode(',', $_POST['subject_ids'])
SELECT * FROM table WHERE focusarea LIKE '%$subject_ids%' ;
结果很完美,但是当我选择多个主题ID时没有任何内容可以显示,例如,如果只选择一个主题ID, 但是何时选择1,2和4,但这个LIKE查询没有任何内容...
我该如何解决这个问题?
答案 0 :(得分:1)
使用implode
之类的,
<强> PHP 强>
$subject_id_aray = explode(",",$_POST['subject_ids']);
$in_array_string = array();
foreach($subject_id_aray as $values){
$in_array_string[] = "'".$values."'";
}
<强> MySQL的强>
$sql = "SELECT * FROM table WHERE focusarea in (".implode(",",$in_array_string).") ;";
答案 1 :(得分:0)
也许你有POST
的错误。
尝试echo
,$subject_ids
注入SQL。
您关注的是简单的数字字符串,由,
连接,但您POST
发送的内容可能不正确。
其他问题,这看起来不像你的完整代码。 提供您的文件,如果这不能解决问题。
答案 2 :(得分:0)
LIKE
子句不适用于您的情况,因为在查询中使用LIKE '%1,2,3%'
将无法获得任何内容,因为您使用ID时应使用IN
而不是LIKE
。如果是字符串,LIKE
将分别用于每个id。
当您将$_POST['subject_ids']
作为数组时,查询将类似于
$subject_str = implode(',', $_POST['subject_ids']);
$sql = "SELECT * FROM table WHERE focusarea IN($subject_str)";
如果您的列focusarea
不是整数,那么
$subject_str = "'".implode("','", $_POST['subject_ids'])."'";
$sql = "SELECT * FROM table WHERE focusarea IN($subject_str)";