【发布时间】:2023-12-07 21:28:01
【问题描述】:
我有以下 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 中没有换行符/制表符吗?
-
你的数据是什么样的? M 和数字之间可能有空格
-
echo
count($id);的返回值是多少? -
如果您看不到 $id 末尾的尾随空格或其他空格,您可能需要修剪()该值。
-
一定有某种奇怪的字符,因为使用 preg_match 和
/\w+/也可以。
标签: php mysql sql quickbooks-online