2016-09-13 50 views
-3

我有一个变种一个问题,我的PHP代码.. 我不明白怎么错误与PHP变量,我不明白

有我的代码:

<fieldset> 
<? 
if(isset($_POST['requete']) && $_POST['requete'] != NULL){ 
    include "connexion.inc"; 
    $reponse = $bdd->query('SELECT id_piece, piece 
    FROM tbl_piece 
    WHERE piece = '.$requete.' '); 
    while($donnees = $reponse->fetch()){ 
    echo $donnees['id_piece']; 
    } 
} 
else{ 
    echo $requete; 
} 
?>   
    <form method="post" action="standard.php"> 
    <input type="text" name="requete"> 
    <input type="submit" value="Rechercher"> 
    </form> 
    </fieldset> 

所以,在我的网页上,只是一个文本框,带有一个按钮来验证和“测试”到文本框中,在那里我明白了,我的var是好的,一切都好,我的脚本正在等待我的关键字在我的表中找到好 我写了“AD202”,它出现在我的桌子上,然后点击我的按钮 ,然后我得到这个错误

Notice: Undefined variable: requete in /home/libtronic/www/html/standard.php on line 52 

和..我不知道如何让我的var声明的,并与我的“AD202”关键字转让应

你能帮我:/?

+1

您还没有声明$ requete – Rhopercy

+0

上面的文件是standard.php吗?如果不是,请提供该文件的代码太... –

+1

也许你可以看看这个确切的重复问题:http://stackoverflow.com/questions/39470620/sqlstate42000-violation-1064-in-a-select – YvesLeBorg

回答

0

您尝试使用一个变量而不先定义它。此外,这将是更安全,更好的做法是使用你的PHP代码中准备的语句,以避免危险的意外(SQL注入)

<fieldset> 
    <?php 
     if(isset($_POST['requete']) && $_POST['requete'] != NULL){ 
      include "connexion.inc"; 

      /* define the variable!! */ 
      $requete=$_POST['requete']; 

      $reponse = $bdd->query('SELECT id_piece, piece 
       FROM tbl_piece 
       WHERE piece = '.$requete.' '); 

      while($donnees = $reponse->fetch()){ 
       echo $donnees['id_piece']; 
      } 
     } else{ 
      echo $requete; 
     } 
    ?> 
    <form method="post" action="standard.php"> 
     <input type="text" name="requete"> 
     <input type="submit" value="Rechercher"> 
    </form> 
</fieldset> 
0

你不是已经宣布$ requete,只是你的查询之前添加:

$requete = $_POST["requete"]; 
2

错误的自我解释,你的变量,$requete,没有任何地方在你的代码中定义。


我假设你指的是$_POST['requete'],来定义它,你将需要添加这样一行:

$requete = $_POST['requete']; 

此外,要防止MySQL的注射,您可以使用mysqli_real_escape_string:($link是连接参数)

$requete = mysqli_real_escape_string($link, $_POST['requete']); 

注意:您需要在使用变量之前定义它,这意味着在$reponse = ...之前


另外,如果你不想定义它,你可以直接使用$_POST['requete'],但它可能处于危险SQL注入。

0

你的问题是

$reponse = $bdd->query('SELECT id_piece, piece 
FROM tbl_piece 
WHERE piece = '.$requete.' '); 

要么你捕捉$ requete

$requete=$_POST['$requete']; 

之前的声明或

您的行应该是

$reponse = $bdd->query("SELECT id_piece, piece 
FROM tbl_piece 
WHERE piece = '$_POST[requete]'"); 

这是不建议的,因为它是开放的SQL注入。

理想情况下,您应该在使用它们进一步功能之前清理所有传入的变量_POST或_GET。$ reponse-> fetch()应该更好$ response-> fetch_assoc()