繁体   English   中英

SQL-查询失败(除非*将字符串分解为数字和字母,然后将其串联)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM