mysql - 使用订单金额更新用户表
问题描述
我正在尝试使用订单表中的金额更新数据库用户表,即退款给用户,但我似乎无法正确获取代码。
谁能帮忙
if (isset($_GET['act']) && $_GET['act'] == "done" && isset($_GET['order_id']) && is_numeric($_GET['order_id']) && isset($_GET['offer_id']) && is_numeric($_GET['offer_id']))
{
$order_id = (int)$_GET['order_id'];
$offer_id = (int)$_GET['offer_id'];
$seller_id = (int)$_GET['seller'];
smart_mysql_query("UPDATE users SET balance=balance+".$order_row['amount']." WHERE user_id='$seller_id' LIMIT 1");
header("Location: index.php?msg=done");
exit();
}
单击退款按钮时,我似乎无法正常工作
<a class="btn btn-danger" style="margin-top: 2px" href="<?php echo SITE_URL; ?>item_orders.php?id=<?php echo $order_row['offer_id']; ?>&order_id=<?php echo $order_row['order_id']; ?>&act=done"> Refund</a>
$order_row 来自下面的查询,这适用于提取所有订单详细信息,包括我想要退回的金额。
<?php
if (isset($_GET['offer_id']) && $_GET['offer_id'] > 0 && isset($_GET['id']) && $_GET['id'] > 0)
{
$order_id = (int)$_REQUEST['id'];
$offer_id = (int)$_REQUEST['offer_id'];
$order_result = smart_mysql_query("SELECT *, DATE_FORMAT(created, '%d %b %Y %h:%i %p') AS order_date, DATE_FORMAT(expiry, '%d %b %Y %h:%i %p') AS expire_date FROM orders WHERE offer_id='$offer_id' AND order_id='$order_id' AND user_id='$userid' LIMIT 1");
if (mysqli_num_rows($order_result) == 0)
{
header ("Location: index.php");
exit();
}
else
{
$order_row = mysqli_fetch_array($order_result);
}
?> 希望有人能解释为什么它不起作用
解决方案
您的 html 链接中没有 offer_id
?id=<?php echo $order_row['offer_id']; ?>?
所以你的 PHP 代码必须是
$offer_id = (int)$_GET['id'];
或将您的链接更改为
?offer_id=<?php echo $order_row['offer_id']; ?>?
另外,您很容易受到 sql 注入的影响,请阅读如何防止 PHP 中的 SQL 注入?并为您的查询使用带有参数的准备好的语句
推荐阅读
- javascript - Eslint 更漂亮的问题
- javascript - 在 React 中使用 API
- ag-grid - AG-Grid - 显示排序图标而不重新加载数据
- reactjs - 使用 Azure 构建时出现@emotion/react 构建错误
- r - 如何获得 MST 问题的基本循环和割集 - igraph
- kendo-grid - 如何检查剑道网格是否有角度 2+ 的变化?
- php - Wordpress 在使用 elementor 编辑网页时出现错误,并且在管理面板上也出现错误
- python - 使用 PHP 运行带参数的 Python 函数
- html - 为什么我的元素不留在他们的预期位置?
- sql - PostGres - 将行类型表中的字段连接到列中