php - 在一列mysql中使用一个where条件查找多个值

标签 php mysql

这是我个人资料的表格:

<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/

相关文章:

PHP/MySQL 数据库连接优先级?

java - 如何压缩uuid和timeuuid?

php - 当我只想输出一行时,MYSQL/PHP 输出整个表

php - 如何将 laravel orm 更改为我的查询

mysql - 使用 TFDConnection 以编程方式设置 "Server"

mysql - Mysql中如何将一张表的字段复制到另一张表?

php - 如何运行cakephp项目的webroot中的php文件

mysql - 困难的 mysql 查询取决于前一个查询的结果 - 可能吗?

mysql - 使用 MYSQL Workbench 查询将数据 (DATETIME) 加载到 MySQL 中时出现错误 1265

php - 基于所选月份的 CSV 文件输出