2016-09-13 52 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()