我有一个像这样的mysql表(价格):
+------------------------------------------------------------------------+
| ID DATA INFO |
+------------------------------------------------------------------------+
| 1 2015-05-29 (3.50-22-22),(3.50-21-22),(3.50-20-22) |
| 2 2015-05-30 (4.50-22-22),(1.50-11-22),(3.00-10-02) |
+------------------------------------------------------------------------+
现在我想做一个只查找包含字符串的值的查询" -22-22)"特别是我只想获得2个值(3.50-22-22)和(4.50-22-22)
所以我这样做(部分)查询
string="-22-22)"
$sql = "SELECT * FROM price WHERE info like '%$string%'";
$array = mysqli_query($sql,$con);
while($row=mysqli_fetch_array($array)){
$info = $rows['info'];
$result= explode(",", $info);
如何继续此查询以获取我的结果?
答案 0 :(得分:1)
您可以使用array_filter来完成此操作,您可以传入$ result并编写自定义回调来过滤您需要的内容。但这取决于您的最终需求,例如,如果您可以随时删除第一个键,然后取消设置,取消设置($ results [0]),然后仅返回剩余值(array_values)< / p>
Per @cicciopasticcio的评论。
您可以尝试这样的事情:
INT
这是可行的代码,我在命令行测试了它,$ finalResults保存了两个预期的结果。
return array_filter($results, function($item) use ($string) {
return ( strpos($item, $string) !== false );
});
答案 1 :(得分:0)
替换它:
$sql = "SELECT * FROM price WHERE info like '%$string%'";
有了这个:
$sql = "SELECT * FROM price WHERE info REGEXP('$string')";
REGEXP会在您的表格中找到当前存储信息中的值。
否则你也可以尝试:
$sql = "SELECT * FROM price WHERE info IN('$string')";
OR
$sql = "SELECT * FROM price WHERE FIND_IN_SET(info, '$string')";