使用表单更新MySQL中的数据

时间:2010-10-22 02:48:31

标签: php mysql forms

即使在搜索网页并查看堆栈溢出时的其他答案之后,我的表单也难以在我的数据库中更新记录。

这是我当前的非功能代码:

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {

session_start();
$tablename = $_SESSION['MM_Username'];
$amount=$_POST['amount'];
$UpdateQuery = "UPDATE '" . $tablename . "' SET stock = '" . $amount . "' WHERE status = 1";
mysql_query($UpdateQuery);

}

我想要更新的表与SESSION变量MM_Username的名称相同。我有一个带有名为amount的文本框和一个提交按钮的表单,单击该按钮时,应该触发上面的代码。如果您需要了解其他信息,请告诉我们。提前谢谢!

4 个答案:

答案 0 :(得分:0)

如果您的会话变量中包含您的tablename,请打印出来。

print $_SESSION['MM_Username'];

同时打印出$UpdateQuery并查看mysql查询是如何形成的。复制该查询&尝试在mysql中手动运行它以查看查询是否正常。

建议:我看到您使用了$_POST。这很好,但我建议你使用$_REQUEST。 PHP中的这个var包含所有$_POST& $_GET内容。有时会忘记将$_POST更改为$_GET,反之亦然。最终浪费他的时间,调试。

答案 1 :(得分:0)

您在表名周围使用了错误的引号。此外,您的查询对SQL注入是开放的。考虑使用PDO和绑定参数。

$UpdateQuery = sprintf('UPDATE `%s` SET `stock` = :amount WHERE `status` = 1',
                       $tablename);
$stmt = $pdo->prepare($UpdateQuery);
$stmt->bindParam('amount', $amount);
$stmt->execute();

答案 2 :(得分:0)

让MySQL告诉你问题是什么。将代码的最后一行更改为:

if (!mysql_query($UpdateQuery)) {
    echo mysql_error();
}

答案 3 :(得分:0)

if (!mysql_query($UpdateQuery)) {
    echo mysql_error()
}