[英]SQL - Query fails *unless* string is broken up into number and letters and then concatenated
我有以下SQL查询,该查询通过DocNumber
返回发票:
"SELECT * FROM Invoice WHERE DocNumber = '" . $id . "'"
在这里, $id
包含一个类似于以下示例的字符串:
M10045
M10046
M10046
除非我将$id
分为'M'
和'10045'
并在查询中将它们连接起来, 否则此查询将失败:
preg_match('/\d+/', $id, $id_number, PREG_OFFSET_CAPTURE);
preg_match('/[A-Z]+/', $id, $id_letter, PREG_OFFSET_CAPTURE);
"SELECT * FROM Invoice WHERE DocNumber = '" . $id_letter[0][0] . $id_number[0][0] . "'"
什么会引起这种问题?
注意,由于未找到匹配项,在查询中使用$id
返回空数组。 拆分$id
的字母和数字部分将返回发票对象。
请试试
$id = trim($id);
要么
$id = preg_replace('/[^\w]/', '', $id);
$query = "SELECT * FROM Invoice WHERE DocNumber = '$id'";
删除不是AlphaNum破折号或下划线的所有字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.