mysql由于%[$variable]%之类的原因而选择不拉任何行是一团糟


mysql select not pulling any rows because of like %[$variable]% is messing up

我的mysql选择查询得到了0行,因为这些值被放入了like语句中。示例查询如下:

$byear = '1975';
$search = "%205679%"; #example value
$query = $db->query("Select * FROM MDPay WHERE dobyear='".$byear."' and concat('|', PatID, FormatPhone, coalesce(' ' + cellphone + ' ', ' ')) like '".$search."'");
// result would be (0 rows) because the $search value converts the %20

这将返回(0)行,因为$search变量最终为"5679",因为%20将被转换为空白。如何防止php将其转换为空白?

我尝试过使用url_encode(),但我不知道如何阻止它转换搜索值。

更新:我已经尝试过转义查询,我认为问题是PHP在发送%20之前就对其进行了解析,所以发送到查询的值是"5679%"。如何防止PHP在将值输入查询之前转换该值?

尝试逃离类似的函数

$byear = '1975';
$search = "#%20#5679%"; #example value
$query = $db->query("Select * FROM MDPay WHERE dobyear='".$byear."' and concat('|', PatID, FormatPhone, coalesce(' ' + cellphone + ' ', ' ')) like '".$search."' escape '#'");