我一直在编写一个包含三个字段的搜索表单,而那个给我带来麻烦的是在sql中使用“LIKE”子句的那个。
以下是代码:
<form method="post" action="<?php $_SERVER['PHP_SELF']?>">
<p>
<label for="nome">Nome Empresa:</label>
<input type="text" name="nome" id="nome"/>
<label for="concelho">Concelho:</label>
<select name="concelho">
<option id="" selected="selected" value="">Seleccione o Concelho</option>
<option value="1" id="1">Um</option>
<option value="2" id="1">Dois</option>
</select>
<label for="actividade">Actividade:</label>
<select name="actividade">
<option id="" selected="selected" value="">Seleccione a actividade</option>
<option value="1" id="1">Actividade Um</option>
<option value="2" id="1">Actividade Dois</option>
</select>
</p>
<p>
<input type="submit" name="pesquisar" value="Pesquisar"/>
</p>
</form>
// sql(不是全部)
$nome = mysql_real_escape_string($_POST['nome']);
// Pesquisa a partir da form
if (isset($_POST['pesquisar'])) {
$queryStr = 'SELECT * FROM ';
if(!empty($nome)){
$queryStr .= 'tbl_clientes WHERE nome LIKE '%'$nome'%'';
}
为什么它会两次给我这个错误?
Warning: Division by zero in .. on line ..
Warning: Division by zero in .. on line ..
我不是在成为一个师......我在吗?
提前致谢
答案 0 :(得分:10)
是的,你这样做。 %
使用的LIKE
符号在外字符串,因此被解释为模运算符。删除其他'标志。
$queryStr .= "tbl_clientes WHERE nome LIKE '%$nome%'";
(这里我使用了单引号和双引号的混合来解决问题。Eoin Campbell's转义内部单引号的解决方案同样有效。你经常会发现你需要使用(组合)用PHP编程时的这些技术。)
答案 1 :(得分:3)
你的错误在于这段SQL
'tbl_clientes WHERE nome LIKE '%'$nome'%''
你需要逃避字符串中的额外撇号。
我假设这个的PHP语法是\
字符
e.g。
'tbl_clientes WHERE nome LIKE \'%'$nome'%\''