将PHP MySQL查询输出转换为变量

时间:2016-08-26 21:06:29

标签: php mysql variables post

我有一个令我头疼的问题。我对PHP和MySQL的交互和编码很新(从我第一次潜入它以来大约3个月),所以我还在学习绳索,可以这么说。

问题是,我有一个页面通过$ _POST从另一个接收数据。一切都很好。页面接收数据,这是一个ID号,并回显与该ID对应的数据库中可用的项目特征。

这部分代码工作正常。

$sql = "SELECT nome, preco, `status` FROM produtos WHERE id = $_POST[id]";
            $result =  mysqli_query($conn, $sql);
            if (mysqli_num_rows($result) > 0){
                while($row = mysqli_fetch_assoc($result)){
                    echo "Nome: "."<span style='color: red;'>".$row["nome"].
                    "</span>".
                    "<br>"."Preço: "."<span style='color: red;'>".
                    "R$".$row["preco"]."</span>"."<br><br>".$row["status"]; 
                }
            }

我想要的是将值回显为变量,以便我可以将它们设置为另一种形式的默认值,并将其发送到另一个页面。显然,$ row ['nome']例如在上面的实例之外无法重复使用。

<form method="post" action="?p=venda">
        <input type="text" name="nome" value="<?php echo $row["nome"]; ?>">
        <input type="text" name="preco" value="<?php echo $row["preco"]; ?>">

        <input type="submit" name="change" value="Efetuar">
    </form>

我知道这段代码很容易被SQL注入,但我现在还没有调查它。这将是一个帮助我组织我的一些东西的离线程序,所以,现在,我不必担心安全性(不是我会一直忽略这些问题)。

提前致谢。

3 个答案:

答案 0 :(得分:1)

将$ row分配给变量并将其视为while循环外的数组()。

$sql = "SELECT nome, preco, `status` FROM produtos WHERE id = $_POST[id]";
$result =  mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0){
    while($row = mysqli_fetch_assoc($result)){
        $array = $row; // assign $row a variable.

        echo "Nome: "."<span style='color: red;'>".$row["nome"].
        "</span>".
        "<br>"."Preço: "."<span style='color: red;'>".
        "R$".$row["preco"]."</span>"."<br><br>".$row["status"]; 
    }
}

// example
echo($array['nome']);

答案 1 :(得分:0)

好的,我告诉你这个,实际上没有必要对每个帖子进行消毒。只有在经过身份验证的用户是Web用户并且他们输入代码的空白时才需要它。

在用户所在的封闭式生产环境中,您可以通过多种方式安全地保护环境,但这不是主题。

无论如何,你有一个数据库图表,它有一个Id列,项目名称,我猜测库存或生产状态。

你的显示器,我没有使用跨度,但我会告诉你我是如何用桌子做的。  因此,让我们查询您的colums:nome,preco,status 以下是两种方法,第一种方法称为循环结果方法,主要用于db表中的多行:

     <?php
   //load it in a variable and trim the outside spaces away if you are entering this from a blank form
    $id=trim($_POST[id]);

   ///this should look familiar to you
 $sql = "SELECT nome, preco, status FROM produtos WHERE id ='".$id."'";
    ///but I use the shorthand method here to get my results.
      $result = $conn->query($sql);  
     ///Now we loop and shift colum information into variables
     /// in a incremental loop, the colums are numbered starting with 0

   echo "<table align=center bgcolor=fff2e2 border=1>\n";
     while ($data = $result->fetch_row()) {
    ////I print my table header, and start the data row, if I want it as several ids I will reset here too (which I will do here if you want to play with this)

   echo '<tr><th>Nome</th><th>Preco</th><th>Status</th></tr>';
   echo '<tr>';
      for ($m=0; $m<$result->field_count; $m++) {
        if ($m==0){
        $nome='';
        $nome=$data[$m];
        echo '<td bgcolor="#ff0000">'.$nome.'</td>';
         } else if ($m==1){
        $preco='';
         $preco=$data[$m];
        echo '<td bgcolor="#ff0000">'.$preco.'</td>';
          }else if ($m==2){
         $status='';
         $status=$data[$m];
        echo '<td bgcolor="#ffffff">'.$status.'</td>';
           }
        }
     //////now if I was building a query chart with submit to another I would put my form and my hidden inputs here before i close the table row with /tr, and my submit button would be my first cell value 
        echo  "</tr>";

          }
          echo "</table>";

你可以使用常规的colum / row方法,因为它是一个ID,看起来像这样我在这里使用了span格式,这样你就可以了解html通常用php表达的方式:

               $id=trim($_POST[id]);
         $sql = "SELECT nome, preco, status FROM produtos WHERE id ='".$id."'";
        $result =  mysqli_query($conn, $sql);
        $row = mysqli_fetch_assoc($result);
        $nome=stripslashes($row['nome']);
        $preco=stripslashes($row['preco']);
        $status=stripslashes($row['status']);

         echo 'Nome: <span style="color: red;">'.$nome.'</span><br>Preço: <span style="color: red;">'.$preco.'</span><br><br>'.$status; 

///注意我的报价用法

答案 2 :(得分:0)

这是我的表示例,如果我要在可滚动列表中列出整个db表,并将其提交到名为detail.php的文件

     <?php
    $sql = "SELECT nome, preco, status FROM produtos";
    $result = $conn->query($sql);  

    echo "<table align=center bgcolor=e3fab5 ><td>";

    echo '<div style="width: 500px; height: 450px; overflow: auto; border 5px dashed black; background color: #ccc;">';
    echo "<table align=center bgcolor=fff2e2 border=1>\n";
     while ($data = $result->fetch_row()) {
  echo '<tr><th>Nome</th><th>Preco</th><th>Status</th></tr>';
   echo '<tr>';
      for ($m=0; $m<$result->field_count; $m++) {
        if ($m==0){
        $nome='';
        $nome=$data[$m];
        echo '<td bgcolor="#ff0000"><form action="detail.php" method="post"><input type="submit" name="id" value="'.$nome.'"></td>';
         } else if ($m==1){
        $preco='';
         $preco=$data[$m];
        echo '<td bgcolor="#ff0000">'.$preco.'<input type="hidden" name="preco" value="'.$preco.'"></td>';
          }else if ($m==2){
         $status='';
         $status=$data[$m];
        echo '<td bgcolor="#ffffff">'.$status.'<input type="hidden" name="status" value="'.$status.'"></td>';
           }
        }

        echo  "</form></tr>";

          }
          echo "</table>";
          echo "</div></table>";
    ?>