【问题标题】:MysqlQuery wild card from stringMysql从字符串查询通配符
【发布时间】:2016-01-08 17:49:13
【问题描述】:

$value 是从以前的 .php 中的复选框集中获取的

$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 中使用* 代替检查。没有帮助。

【问题讨论】:

  • 我试过了,但没用:$query = $FirstPartOfQuery. " AND word LIKE '".$value."'".")";
  • 回声 $query ;并说出什么是通过?
  • 什么 $FirstPartOfQuery。包含?
  • @VigneswaranS 完整查询: SELECT wyraz FROM wyrazy WHERE wyraz_id
  • @VigneswaranS 但正如我所说,如果我自己定义 $value,它编译得很好。这很奇怪。

标签: php mysql string wildcard


【解决方案1】:

如果你的 implode('',$value) ;给出 *N*0** 值然后 str_replace(*,%,$value) 将导致 %N%0%%。所以检查 $_post[];array 正确。

<?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%%' )
?>

【讨论】:

    【解决方案2】:

    调试我的代码后,问题原来是我的 .php 末尾部分缺少 ;,其中使用了该死的 eval,并且仅在定义 $_POST['checkbox_value']; 时才通过。

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

    抱歉,感谢@VigneswaranS 付出的努力和时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      • 2020-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多