我的mysql select查询由于要放入like语句中的值而获得0行。示例查询如下:
$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转换值?
最佳答案
尝试逸出like函数
$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 '#'");
关于php - mysql选择不拉任何行,因为像%[$ variable]%搞砸了,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25940949/