这是我个人资料的表格:
<table border="1">
<tr>
<td>Name</td>
<td>Skills</td>
</tr>
<tr>
<td>John Doe</td>
<td>php-development, css, html, ajax</td>
</tr>
<tr>
<td>Jane Doe</td>
<td>xml, jquery, ajax, php-development</td>
</tr>
<tr>
<td>Markinson Zuckerberg</td>
<td>html, php-development, ajax, magento</td>
</tr>
</table>
我正在尝试使用 SQL 中的 get 方法进行过滤:
<pre>$sql= "SELECT distinct * FROM `profile` WHERE status='1'";
if(isset($_GET['services']) && $_GET['services']!="") :
$sql.=" AND services LIKE '%".implode("%','%",$_GET['services'])."%'";
endif;</pre>
我尝试了上面的代码进行过滤,但它采用连接 sql 查询作为
SELECT distinct *
FROM profile
WHERE status='1'
AND services LIKE '%affiliate-marketing%','%ajax%'
ORDER BY pid DESC
有什么解决办法吗?
最佳答案
您不能使用 LIKE '%something%', '%somethingelse%'
,该语法无效。您需要使用 OR
关键字来列出您的过滤可能性。
假设 $_GET['services']
是一个数组:
<?php
$_GET['services'] = array('affiliate-marketing', 'ajax');
$sql = ''; // just for output purposes
$services_like = array() ;
foreach ($_GET['services'] as $service) {
$services_like[] = ' service LIKE "%' . $service . '%" ';
}
$services_like_string = implode (' OR ', $services_like);
$sql .= 'AND ( ' . $services_like_string . ' ) ';
echo $sql; // echoes : AND ( service LIKE "%affiliate-marketing%" OR service LIKE "%ajax%" )
?>
关于php - 在一列mysql中使用一个where条件查找多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41035653/