Деление на ноль - PullRequest
       31

Деление на ноль

0 голосов
/ 16 мая 2009

Я программировал форму поиска с тремя полями, и то, что доставляет мне неприятности, - это то, которое использует предложение "LIKE" в sql.

Вот код:

            <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 ]

10 голосов
/ 16 мая 2009

Да, вы делаете. Знаки %, используемые LIKE, находятся вне строки и поэтому интерпретируются как оператор по модулю. Убрать дополнительные знаки.

$queryStr .= "tbl_clientes WHERE nome LIKE '%$nome%'";

(Здесь я использовал комбинацию одинарных и двойных кавычек, чтобы решить проблему. Решение Эоина Кэмпбелла о том, чтобы избежать внутренних одинарных кавычек, так же верно. Вы часто найдете, что вам нужно будет использовать ( сочетание) этих приемов при программировании на PHP.)

3 голосов
/ 16 мая 2009

Ваша ошибка с этим куском SQL

'tbl_clientes  WHERE nome LIKE '%'$nome'%''

Вам нужно избежать лишних апострофов внутри вашей строки.

Я предполагаю, что синтаксис PHP для этого - \ символ

, например

'tbl_clientes  WHERE nome LIKE \'%'$nome'%\''
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...