php通过通配符准备语句

时间:2017-03-01 20:19:00

标签: php mysql

我正在使用LIKE和通配符构建一个准备好的语句:

$sql = "select id,ra from targets where ra like CONCAT('%', ?, '%')";

当我绑定一个参数值,例如" 123"但如果我用一个句点绑定一个句号,则不起作用,例如" 123。"。我想得到所有看起来像这样的值:

123.12
123.48
123.52
etc.

但这不起作用(我只是在字符串中的任何地方获得包含123的所有行)。将期间输入准备好的报表是否有问题?

1 个答案:

答案 0 :(得分:-1)

你的专栏是什么数据类型,我用字符串和双重类型对它进行了测试,并且像我一样没有问题(v 5.5.46),如果你没有运气,可以试试Regexp。您需要将标点符号包装在方括号中,以防止将其用作运算符。

尝试:

SELECT id, ra
FROM targets
WHERE ra REGEXP '123[.]';

绑定的内容如下:

// Note no "" around question mark (would cause it to eval as the expression).
$sql = "SELECT id, ra FROM targets WHERE ra REGEXP ?";

MySQL Regexp

修改

添加了尝试regexp的原因,以及列出我试图复制OP所遇到的问题的测试。