0

我是 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() );

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

4

2 回答 2

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 函数。如果您确实想让您的代码变得更好,更不易受到攻击,请查看以下链接:

为什么我不应该在 PHP 中使用 mysql_* 函数?

我可以用什么来代替 mysql_ 函数?

准备好的陈述

使用 MySQLi 准备的语句

于 2013-02-13T22:12:22.957 回答
0

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

如果你还想用mysql_函数至少使用mysql_real_escape_string对它们进行转义,但我不建议使用mysql_函数,因为它们已被弃用。

这是您可以执行的操作:

  1. 您可以遍历每个帖子数据并逐个更新它或
  2. 构建一个长查询并执行一次。
于 2013-02-13T22:13:48.007 回答