2009-05-16 3 views
0

필자는 3 개의 필드가있는 검색 양식을 프로그래밍했으며 필자에게 문제가되는 것은 SQL의 "LIKE"절을 사용하는 것입니다.0으로 나누기 경고

  <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 '%%의 %'", $의 놈); –

+0

및 구두점은 어떻게됩니까? 때로는 입력란에 "A.Helper"와 같은 글을 쓰고 데이터베이스에 이름이 있는데 왜 결과가 없습니까? – dutraveller

+0

@ 대니얼 : 리터럴 %를 얻으려면 %%를 써야합니다. – Stephan202

3

귀하의 오류가 당신은 당신의 문자열 내부의 추가 아포스트로피를 탈출해야하는 SQL

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

의 조각입니다.

나는 이것에 대한 PHP 구문은 \ 문자

예를 들어, 가정

'tbl_clientes WHERE nome LIKE \'%'$nome'%\'' 
관련 문제