Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用通配符编写的php语句_Php_Mysql - Fatal编程技术网

用通配符编写的php语句

用通配符编写的php语句,php,mysql,Php,Mysql,我正在使用LIKE和通配符构建一个准备好的语句: $sql = "select id,ra from targets where ra like CONCAT('%', ?, '%')"; 当我绑定一个像“123”这样的参数值时,这可以很好地工作,但是如果我绑定一个带句点的参数值,例如“123”,这就不起作用了。我希望获得所有如下所示的值: 123.12 123.48 123.52 etc. // Note no "" around question mark (would cause it

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

$sql = "select id,ra from targets where ra like CONCAT('%', ?, '%')";
当我绑定一个像“123”这样的参数值时,这可以很好地工作,但是如果我绑定一个带句点的参数值,例如“123”,这就不起作用了。我希望获得所有如下所示的值:

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

但这不起作用(我只获取字符串中任何位置包含123的所有行)。在准备好的语句中输入句点有问题吗?

您的列是什么数据类型,我用字符串和双精度类型测试了这个问题,就像为我工作一样,没有问题(v 5.5.46),如果您运气不好,可以尝试一下Regexp。您需要将标点符号用方括号括起来,以防止它被用作运算符

尝试:

对于一个绑定,它看起来像:

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

编辑


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

如果出现错误,“不工作”是什么意思。。错误的结果?没有结果。。解释更好我得到了错误的结果:我得到的行在字符串的任何地方都返回了“123”:例如258.526123。我想要的是包含“123”的行。但是句点不匹配。这不是真的。你不会得到那样的东西。在这里发布一个完整的可验证示例,任何人都可以运行并确认为什么要尝试regexp?like怎么了?原来的帖子说like不起作用。但是我回去添加了一些描述性的文本以使其更清晰。列的数据类型是FLOAT。以下查询生成错误的结果:从目标中选择ra,其中ra类似CONCAT(“%”,123.,“%”);但是下面的查询生成了正确的结果:从目标中选择ra,其中ra类似于CONCAT(“%”、“123.”、“%”);但我不知道如何将这些单引号放在我准备的语句中?@MeganCrane您能为这个查询添加一个bind实现的示例吗?
mysqli_stmt_bind_param($stmt,$d',$ra)