2009-05-16 16 views
0

私は3つのフィールドを持つ検索フォームをプログラミングしていますが、私に問題を起こしているのは、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 .. 

私は部門を作っていません...私は?

ありがとうございます。

答えて

10

はい、あります。 LIKEによって使用される%記号は、の外側の外側にあり、したがってモジュロ演算子として解釈されます。追加の記号を削除します。

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

(ここで私が問題をSOVEする単一引用符と二重引用符の混合物を使用。内側の単一引用符をエスケープのEoin Campbell'sソリューションは、同じように有効です。あなたは、多くの場合、あなたが使用する必要がありますことがわかります(の組み合わせ)これらの技術PHPでプログラミング。)

+0

または使用のsprintf:。 $ queryStr =はsprintf( "tbl_clientes WHEREノームLIKE '%% sの%'"、$のノーム)。 –

+0

と句読点はどうですか?ときどき入力ボックスに "A.Helper"のようなものを書き、名前がデータベースに存在する場合、結果が表示されないのはなぜですか? – dutraveller

+0

@Daniel:リテラル%を取得するには、%%を記述する必要があります。 – Stephan202

3

あなたのエラーはあなたの文字列内の余分なアポストロフィをエスケープする必要があるSQL

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

のこの作品です。

私は、このためのPHP構文は、例えば\文字

であると仮定

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