即使在搜索网页并查看堆栈溢出时的其他答案之后,我的表单也难以在我的数据库中更新记录。
这是我当前的非功能代码:
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的文本框和一个提交按钮的表单,单击该按钮时,应该触发上面的代码。如果您需要了解其他信息,请告诉我们。提前谢谢!
答案 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()
}