Php 我能';I don’我的问题没有解决
我正在尝试创建一个目录,您可以根据提供的参数进行搜索。naam是产品的名称,woord是给定的字符。稍后在脚本中,我将查询的这一部分粘附到第一部分 多谢各位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
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%”代码>由于您仍然使用双引号。。。