PHP / MySQL只更新第一行borkness

时间:2013-02-13 21:54:30

标签: php mysql forms

我是PHP / MySQL的完整新手,但已决定制作某种界面来处理我店铺的库存。我已经学会了负荷,但我现在陷入绝望之中。

此表单显示一组特定类型的库存和数量:

<form method="post" action="submit.php">
<?php
while ($row = mysql_fetch_assoc($rs)) { 
echo"<input type=\"hidden\" name=\"ovid[]\" value=" . $row['option_value_id'] . " />";
echo $row['name'];
echo"<input type=\"text\" name=\"quant[]\" value=" . $row['quantity'] . " />";
echo"<input type=\"submit\" /><br />";
} ?>
</form>

这是submit.php:

$_POST['ovida'] = implode(",",$_POST['ovid']);
$_POST['quanta'] = implode(",",$_POST['quant']);

print $_POST["ovida"];
print $_POST["quanta"];

$ovidyay = $_POST["ovida"];
$quantyay = $_POST["quanta"];

$query = "UPDATE product_option_value SET quantity ='$quantyay' WHERE option_value_id = '$ovidyay'";
$rs = mysql_query( $query )
or die( mysql_error() );

当我按下提交时(没有很多)没有错误,但我可以更新的唯一条目是列表中的第一个条目。我们将非常感激地接受任何帮助。

2 个答案:

答案 0 :(得分:1)

您可以分别迭代和更新每个项目:

for ($i = 0; $i < COUNT($_POST['ovid']); $i++)
{
    $ovidyay = $_POST['ovid'][$i];
    $quantyay = $_POST["quanta"][$i];

    $query = "UPDATE product_option_value SET quantity ='$quantyay' WHERE option_value_id = '$ovidyay'";
    $rs = mysql_query($query);
}

此外,代码容易受到SQL注入攻击,并且您正在使用已弃用的MySQL php函数。如果您确实希望更好地使代码更容易受到攻击,请查看以下链接:

Why shouldn't I use mysql_* functions in PHP?

What could i use instead of mysql_ functions?

Prepated Statements

Prepared Statements with MySQLi

答案 1 :(得分:0)

首先不要使用 mysql _ * 函数尝试使用PDO或MySQLi并阅读准备好的语句。

如果你仍然想使用 mysql_ 函数,至少使用 mysql_real_escape_string 来逃避它们,但我不建议使用 mysql _ 函数,因为它们已被弃用。

以下是您可以做的事情:

  1. 您可以遍历每个帖子数据并逐个更新或
  2. 构建一个长查询并执行一次。