从SQL结果中标识特定行

时间:2013-11-29 11:05:49

标签: php mysql sql

我有一个“订单”列表,包括产品名称,描述等,其中一个字段是数量,位于可编辑的文本框中,旁边是更新按钮(具有唯一的从DB中提取的该行的ID)。现在,当按下更新按钮时,我希望更新该产品的数量。但是我在获取正确的更新数量以与该行的ID匹配时遇到问题。

我可以看到问题是我设置$ quantity1变量只是在IF语句中拉出的最后一个结果,但我想不出如何让它与我点击的行相关联。以下是代码的一部分:

    echo "<td>".$row['uName']."</td>";
echo "<td>".$row['prodID']."</td>";?>
<form method="post" action="reserved.php">
<td><input name="quantity1" type="text" id="quantity1" size="1" value='<?= $qty ?>' />
<td><input name="order2"  id="order2" type="submit" class="button_add" value='<?= $row['ID']?>' /></td><?
echo "</tr>";       

}

}elseif(!empty($studyDir) && $rowCount == 0){
?>
  
<?
}
}
if (isset($_POST['order2'])){
$order2 = $_POST['order2'];
$quantity1 = $_POST['quantity1'];

\\echo $quantity1;

$link3 = mysql_connect('localhost', '******', '******');
$SQL1 = "UPDATE ybsinter_stock.reservedStock SET qty = $quantity1 WHERE ID = '$order2'";
$result1 = mysql_query($SQL1);  
mysql_close($link3);
unset($quantity1);
unset($order2);
header("Location:reserved.php");
}
?>  

1 个答案:

答案 0 :(得分:0)

我看不到您的表单结尾,即没有&lt; \ form&gt;。 另请注意,在表格中声明表单(完全包含在td中除外)是错误的HTML,通过W3C validator运行代码。

还可以尝试使用PHP heredocs输出带有嵌入数据的HTML块....

echo <<<EOF
<tr>
<td>{$row['uName']}</td>
<td>{$row['prodID']}</td>
<td>
    <form method="post" action="reserved.php">
    <input name="quantity1" type="text" id="quantity1" size="1" value="{$qty}" />
    // style this button right with CSS if you want ...
    <input name="order2"  id="order2" type="submit" class="button_add" value="{$row['ID']}" />
    </form>
</td>
</tr>
EOF;   

上述表单只会使用您感兴趣的ID向您的脚本提交数据..

您的SQL查询似乎大致正确,但请注意SQL injection - 请将您的变量绑定到查询中,而不是插入它们。使用mysqliPDO库而不是过时的基本mysql函数。

$mysqli = new mysqli( /* your connection params here */ );
$sql1 = 'UPDATE ybsinter_stock.reservedStock SET qty = ? WHERE ID = ?';

$stmt = $mysqli->query( $sql1);
$stmt->bind_param( 'sd', $quantity1, $order2);
$result = $stmt->execute();