Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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 我能';I don’我的问题没有解决_Php_Mysql_Sql - Fatal编程技术网

Php 我能';I don’我的问题没有解决

Php 我能';I don’我的问题没有解决,php,mysql,sql,Php,Mysql,Sql,我正在尝试创建一个目录,您可以根据提供的参数进行搜索。naam是产品的名称,woord是给定的字符。稍后在脚本中,我将查询的这一部分粘附到第一部分 多谢各位 if(strlen($whereQuery) > 0) $whereQuery .= 'AND naam LIKE '%'.$woord.'%''; else $whereQuery = 'WHERE naam LIKE '%'.$woord.'%''; 我宁愿用双引号来避免混淆 if(strlen($whereQ

我正在尝试创建一个目录,您可以根据提供的参数进行搜索。naam是产品的名称,woord是给定的字符。稍后在脚本中,我将查询的这一部分粘附到第一部分

多谢各位

if(strlen($whereQuery) > 0) 
    $whereQuery .= 'AND naam LIKE '%'.$woord.'%'';
else
    $whereQuery = 'WHERE naam LIKE '%'.$woord.'%'';

我宁愿用双引号来避免混淆

if(strlen($whereQuery) > 0) 
    $whereQuery .= " AND naam LIKE '%" .$woord. "%' ";
else
    $whereQuery = " WHERE naam LIKE '%" .$woord. "%' ";
或者简单地说

if(strlen($whereQuery) > 0) 
    $whereQuery .= " AND naam LIKE '%$woord%' ";
else
    $whereQuery = " WHERE naam LIKE '%$woord%' ";

作为旁注,如果变量的值来自外部,则查询易受攻击。请看下面的文章,了解如何预防它。通过使用
PreparedStatements
可以避免在值周围使用单引号


您需要转义作为查询一部分的引号:

if(strlen($whereQuery) > 0) 
    $whereQuery .= 'AND naam LIKE \'%'.$woord.'%\'';
else
    $whereQuery = 'WHERE naam LIKE \'%'.$woord.'%\'';
或者混合使用单引号和双引号。

使用双引号

或者转义单引号


另外,请不要做你目前正在做的事情


。它们不再得到维护。看到了吗?相反,学习,并使用,或-将帮助您决定哪一个。如果您选择PDO,.

任何带有颜色编码的编辑器都会立即向您显示问题。只要看看问题中的代码就可以了

试试这个:

$whereQuery = ($whereQuery ? $whereQuery." AND" : " WHERE")." naam LIKE '%".$woord."%'";
这样可以避免重复整个“LIKE”部分两次;)


另外,请确保已正确转义
$woord
<代码>mysql\u real\u escape\u字符串在这种情况下是不够的。您还需要通过
preg\u replace(“/[%\u]/”、“\\$1”、$woord)运行它以转义WHERE子句中的特殊字符。

问题到底是什么?标题没有提供任何信息,实际问题也没有。你说的“不能上班”是什么意思?预期的结果是什么?你得到了什么?您是否收到任何错误?或者只是:
$whereQuery=“WHERE naam LIKE“%$woord%”由于您仍然使用双引号。。。