如何在PHP中使用LIKE操作符从数据库中获取数据?

wwwo4jvm  于 2023-03-11  发布在  PHP
关注(0)|答案(1)|浏览(116)

我试图从'MySql'中获取数据,其中$path值与使用PHP的数据库中的任何值匹配,但当我使用带有'%%'的LIKE时,查询失败,但当我使用不带百分比'%%'的LIKE时,它工作正常。
我已经尝试直接在MySQL Workbench中执行此查询,效果非常好。
有人知道为什么它不起作用吗?

$sourceType = 'object';
$sourceId = 189;
$path = 'test'; //int or string value

SELECT d.targetid as id, d.sourcetype as type, CONCAT(o.o_path, o.o_key) as path
FROM dependencies d
INNER JOIN objects o ON o.o_id = d.targetid AND d.targettype= 'object'
WHERE d.sourcetype = '" . $sourceType. "' AND d.sourceid = " . $sourceId . " AND CONCAT(o.o_path, o.o_key) LIKE CONCAT('%', $path, '%');

我用这种方法试过球棒也不管用:LIKE '%" . $path . "%';
仅当我用途:REGEXP '".$path."',它可以工作,但它有大小写敏感值的问题,有时不能提取所有数据。例如,如果有4行包含“test”,它只得到3行。

chy5wohz

chy5wohz1#

我希望你做得很好。我已经检查了你的代码,并重新组织了一点,试图解决你遇到的问题。你可以尝试一下,让我知道它是否适合你。

<?php
$sourceType = 'object';
$sourceId = 189;
$path = 'test'; //int or string value

$query = "SELECT 
    d.targetid as id,
    d.sourcetype as type,
    CONCAT(o.o_path, o.o_key) as path
FROM dependencies d
    INNER JOIN objects o 
        ON o.o_id = d.targetid AND d.targettype= 'object'
WHERE 
    d.sourcetype = '$sourceType' AND 
    d.sourceid = '$sourceId' AND 
    CONCAT(o.o_path, o.o_key) LIKE '%$path%'
";

相关问题