来自字符串的MysqlQuery通配符

时间:2016-01-08 17:49:13

标签: php mysql string wildcard

var winHeight = $(window).height() - 100; var winWidth = $(window).width() - 200; var windowOptions = 'toolbar=0,location=0,directories=0,status=1,menubar=0,scrollbars=1,resizable=1,width=' + winWidth + ',height=' + winHeight + ',left=100,top=100'; cUrl = xxxx.html window.open(cUrl, "win", windowOptions); 从以前的.php

复选框中获取
$value

$value = $_POST['checkbox_value']; $value = implode('', $value); // since it's an array I convert it to a string 现在定义为$value(5个字母的字符串)

*N*O*

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

$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%';引起了不安,因此我在%中使用了*来检查。没有帮助。

2 个答案:

答案 0 :(得分:0)

如果你的内爆('',$ 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%%' )
?>

答案 1 :(得分:0)

在对我的代码进行重新调整后,问题在我的.php的末尾部分缺少;,其中使用了血腥的eval并且仅在$_POST['checkbox_value'];被传递时才传递definied。

因此,问题没有问题。

对不起,谢谢你@VigneswaranS的努力和时间。