我有以下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 短划线或下划线的字符。