2014-10-18 6 views
0

У меня была проблема с этим php, потому что он ничего не возвращал из БД, поэтому я понял, что, возможно, он не получал переменную от $ _POST. Поэтому я попытался напечатать его, и он ничего не возвращал. Таким образом, iive ввел свое значение вручную, но он все еще ничего не печатает! Хотя он печатает тексты, если в сценарии была проблема синтаксиса, он тоже не печатал тексты (я думаю). Поэтому я не знаю, что не так.PHP - Почему он не печатает переменную, хотя печатает текст?

Часть HTML со столами печатается! В конце есть «эхо» что угодно »; и он также печатается! Единственное, что не напечатано, это переменная $ nome.

Извините за португальские тексты, но вам не нужно беспокоиться о них.

<?php 

     //$nome = $_POST['nome']; 
     $nome = "renato"; //ive set the value manually for tests 

     $pdo = new PDO('mysql:host=myserver;dbname=mydb', 'myuser', 'mypw'); 


     if ($nome = ""){ 
      $sql = $pdo->query("SELECT * FROM clientes"); 
     } 
     else{ 
      $sql = $pdo->query("SELECT * FROM clientes WHERE nome='".$nome."'"); 
     } 

     echo $nome; //prints nothing! 
    ?> 

    <table border="1px"> 
     <tr> 
      <td> 
       <h3>ID</h3> 
      </td> 
      <td> 
       <h3>NOME</h3> 
      </td> 
      <td> 
       <h3>ENDERECO</h3> 
      </td> 
      <td> 
       <h3>BAIRRO</h3> 
      </td> 
      <td> 
       <h3>CIDADE</h3> 
      </td> 
      <td> 
       <h3>FIS_JUR</h3> 
      </td> 
      <td> 
       <h3>RG</h3> 
      </td> 
      <td> 
       <h3>CPF</h3> 
      </td> 
      <td> 
       <h3>TEL</h3> 
      </td><td> 
       <h3>TEL2</h3> 
      </td> 
      <td> 
       <h3>DATA_NASC</h3> 
      </td>  
     </tr> 


//this table gets printed! 


    <?php 

     while($row = $sql->fetch(PDO::FETCH_ASSOC)){ 
     echo " 
     <tr> 
      <td> {$row['id']} 
      </td> 

      <td> {$row['nome']} 
      </td> 

      <td> {$row['endereco']} 
      </td> 

      <td> {$row['bairro']} 
      </td> 

      <td> {$row['cidade']} 
      </td> 

      <td> {$row['fis_jur']} 
      </td> 

      <td> {$row['rg']} 
      </td> 

      <td> {$row['cpf']} 
      </td> 

      <td> {$row['tel']} 
      </td> 

      <td> {$row['tel2']} 
      </td> 

      <td> {$row['data_nasc']} 
      </td> 
     </tr>"; 

//this one prints nothing! 
     } 

     echo $nome; //prints nothing 
     echo "anything"; //yes, this one gets printed 
     $pdo = null; 
     $sql = null; 
    ?> 
     </table> 

ответ

1

заменить эту строку

if ($nome = ""){ 

с

if ($nome == ""){ 

вы присваиваете значение вместо сравнения.

+0

чувак! Спасибо большое! какая глупая ошибка! XD – renatoff

0
`the problem is that single = sign. rather use double == for comparing.` 

the batter way checking empty string use 

` if (empty($nome)){ 
    $sql = $pdo->query("SELECT * FROM clientes"); 
}else{ 
    $sql = $pdo->query("SELECT * FROM clientes WHERE nome='".$nome."'"); 
} 
Смежные вопросы