来自字符串的MysqlQuery通配符


MysqlQuery wild card from string

$value是从以前的.php 的checkbox集中获取的

$value = $_POST['checkbox_value'];  
$value = implode('', $value); // since it's an array I convert it to a string

$value现在被定义为*N*O*(5字母字符串)

$percent = '%';
$value = str_replace('*', $percent, $value); // that's being desperate already
$query = $FirstPartOfQuery. " AND word LIKE '{$value}'";

这应该为我的查询生成一个工作代码

AND (word LIKE 'C%' AND word LIKE '%N%O%')

这正是我的查询打印的内容,但它不起作用。

但如果我手动定义$value = '%N%O%';,它就可以编译了。

我的猜测是,在转换为字符串后,发布的值不会被读取为单引号字符串。

我认为%引起了不安,所以我在checkbox_value中使用了*来检查。没有帮助。

如果您的内爆('',$value);给出*N*0**值,则str_replace(*,%,$value)将导致%N%0%%。所以检查$_post[];阵列正确。

<?php
$value="*N*0**";
$percent = '%';
$value = str_replace('*', $percent, $value); 
$second= "  AND word LIKE  '$value' )";
$FirstPartOfQuery="(word LIKE 'C%' ";
$query = $FirstPartOfQuery. $second ;
echo "AND ". $query;//AND (word LIKE 'C%' AND word LIKE '%N%0%%' )
?>

在对我的代码进行调试后,问题是在我的.php的末尾部分缺少;,在那里使用了血腥的eval,并且只有在定义$_POST['checkbox_value'];时才传递。

因此,所提出的问题没有问题。

抱歉并感谢@VigneswaranS为您付出的努力和时间。