2016-08-26 3 views
0

У меня проблема, которая дает мне головную боль. Я довольно новичок в взаимодействии с PHP и MySQL, а также в кодировании в целом (около 3 месяцев с тех пор, как я впервые погрузился в него), поэтому я все еще изучаю веревки, так сказать.Поверните вывод запроса MySQL MySQL в переменную

Дело в том, что у меня есть страница, которая получает данные через $ _POST от другого. Все хорошо для хорошо. Страница получает данные, которые являются идентификационным номером, и отражает характеристики элемента, доступные в базе данных, соответствующей этому идентификатору.

Эта часть кода работает просто отлично.

$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-инъекции, но я не рассматриваю его прямо сейчас. Это будет своего рода автономная программа, которая поможет мне организовать некоторые из моих вещей, поэтому на данный момент мне не нужно беспокоиться о безопасности (не то, что я буду продолжать игнорировать эти проблемы).

Заранее спасибо.

+1

При использовании 'mysqli' вы должны использовать [параметризованных запросов] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) и ['bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param. php), чтобы добавить данные пользователя в ваш запрос. Если вы не слишком женаты на «mysqli», вы можете изучить использование PDO, поскольку это дает еще больше улучшений. – tadman

ответ

1

Назначьте строку $ переменной и обработайте ее как массив() вне цикла 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']); 
0

ОК Я скажу вам это, его фактически не нужно санировать каждый пост. Его необходимо только в том случае, если ваши аутентифицированные пользователи являются веб-пользователями, и есть пробел, в котором они вводят код.

В закрытых производственных средах, где находятся ваши пользователи, вы можете безопасно охранять окружающую среду несколькими способами, но это не в тему Вот.

В любом случае у вас есть диаграмма DB, в которой есть столбец идентификатора, имя элемента, и я предполагаю наличие запасов или статус производства.

Ваш дисплей, я не использую пролеты, но я покажу вам, как я это делаю со столами. Так позволяет сделать запрос для colums: нома, PRECO, статус Вот два способа, первый называются петельным метод результата, который в основном используется для более одной строки в таблице БД:

 <?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>"; 

вы могли бы сделать регулярный метод Колум/строки, так как это один ID, который будет выглядеть следующим образом я использовал формат поверочного здесь, так что вы можете получить представление о том, как 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; 

/// обратите внимание на использование моей цитаты выше

0

вот мой стол пример, если я буду перечислять всю таблицу БД в прокручивать список, и представить его в файл с именем 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>"; 
    ?> 
Смежные вопросы