除零警告

时间:2009-05-16 19:22:54

标签: php mysql

我一直在编写一个包含三个字段的搜索表单,而那个给我带来麻烦的是在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 ..

我不是在成为一个师......我在吗?

提前致谢

2 个答案:

答案 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'%\''