在SELECT WHERE查询MYSQL中使用递增的值

时间:2013-07-12 17:42:16

标签: php mysql select while-loop

让我先说一下,过去几个月我一直在编码。我知道我到处都可能犯了很多错误或不好的做法。我喜欢建设性的批评,所以请让我知道我能做得更好,以及如何解决我目前的问题。

此代码的目的是根据以前输入的信息创建零件编号表及其关联的位置列数据(存储类型,机架号,货架编号)。我的入门表格完美无缺。我键入了一些我想要搜索的部分,然后将该数字发回给自己。然后我会看到这些文本输入字段以放入部分编号。

    //this form is to submit the number of parts you're looking for,
    //and posts back to itself
    <form action=View2.php method="post">
    <input type="text" name="num">
    <button type="submit">Number of Parts</button>
    </form> 

    //This form takes the posted number, and creates that many text fields, 
    //populated with the number part you are entering.
    <form action="List.php" method="post">
    <?php while ($i<=$num){
    echo "<input type='text' name='part$i' value='part$i'><br><br>";$i++;}?><input type="hidden" name="num" value="<?php $num?>">
    <button type="submit">Submit</button>
    </form>

我的问题是运行mysqli_query来填充表格。我被困在哪里从这里开始。我知道我需要获取发布的每个部件号,并将其用作SELECT WHERE搜索中的条件,所以我做了这个While循环:

    <?php 
    echo "<table border='1'>
        <tr>
        <th>Part Number</th>
        <th>Location</th>
        <th>Rack</th>
        <th>Shelf</th>
        </tr>";

    while($i<=$num){
          $x=$_POST["part$i"];
          $result = ($con,"SELECT * FROM parts WHERE pn ='$x'");
          $row = ($result);
          echo "<tr>";
          echo "<td>" . $x . "</td>";
          echo "<td>" . $row['rcb'] . "</td>";
          echo "<td>" . $row['ra'] . "</td>";
          echo "<td>" . $row['sh'] . "</td>";
          echo "</tr>";
          $i++;
          }

        echo "</table>";?>

此时页面崩溃,但是如果我注释掉$ result行,我将获得表格,其中的部分编号字段填充了上一页的值。

任何人都知道我做错了什么,或者我怎么做得更好?

1 个答案:

答案 0 :(得分:1)

这一行没有做任何好事:

$result = ($con,"SELECT * FROM parts WHERE pn ='$x'");

您需要实际查询数据库。

$mysqli = new mysqli("localhost", "my_user", "my_password", "...");

...

$result = $mysqli->query("SELECT * FROM parts WHERE pn ='$x'");

您应该使用预准备语句,因此您的代码不会对sql注入开放......