繁体   English   中英

php变量错误,我不明白

[英]Error with php variables, i don't understand

我的 php 代码中的 var 有问题.. 我不明白是怎么回事

有我的代码:

<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”关键字

你可以帮帮我吗 :/ ?

错误不言自明,您的变量$requete未在代码中的任何位置定义。


我假设您指的是$_POST['requete'] ,要定义它,您需要添加如下一行:

$requete = $_POST['requete'];

并且为了防止 MySQL 注入,您可以使用mysqli_real_escape_string :( $link是连接参数)

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

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


或者,如果你不想定义它,你可以直接使用$_POST['requete'] ,但是它可能有 SQL 注入的风险。

您还没有声明 $requete,只需在查询之前添加它:

$requete = $_POST["requete"];

您尝试使用变量而不先定义它。 此外,在您的 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>

你的问题是

$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() 更好

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM