php - 使用 $wpdb->insert 将错误数据插入数据库

标签 php mysql wordpress

嘿伙计们!

我目前有一个代码,可以从名为 wp_refundrequests 的自定义表中获取数据,并将它们作为表格打印到页面上。在该页面上,管理员可以通过按每个订单侧面的按钮来接受或拒绝请求。拒绝请求只是从表中删除该请求,但接受应该从当前表中删除它,并将信息插入到下一个称为“已接受请求”的表中。

wp_refundrequests 表包含客户想要退款的订单。

获取信息并打印它的代码:

global $wpdb;
$requests = $wpdb->get_results("SELECT * FROM wp_refundrequests", ARRAY_A);

foreach ($requests as $row) {
echo "<div class='requests'>" . "<li class='refunds'>" . "Palauttajan nimi: ".
$row['customer_name'] . "</br>" ."Palautettavat tuotteet: ".$row['product_name']."<br> "."Määrä: ".
$row['product_qty'] . " "
. "<br>Kommentti: " . $row['comment'] . "<br> " . "Hinta: " . $row['refund_total'] . "€ " .
"<br>" . "Päivämäärä: " . $row['request_date'] . " " .
"<a class='right' href='admin-page?deleteid=" . $row['request_id'] . "'>Deny</a></li>" .
"<li class='refundaccepts'><a href='admin-page?acceptid=" . $row['request_id']
. "'>Accept</a></li>" . "</div>";
$_SESSION['custname'] = $row['customer_name'];
$_SESSION['prodname'] = $row['product_name'];
}

使用我当前的代码,“接受”按钮将其删除,并将信息插入到新表中,但插入的信息是错误的。似乎它想要将已插入 wp_refundrequests 表中的最新数据插入到 wp_acceptedrequests 中,或者保留最新退款请求中的数据并尝试插入该数据,因为例如此处所示(抱歉还有一些芬兰语):

Table

如果我单击上面的旧按钮上的“接受”按钮,查询仍会像这样插入它: Insert query

所以它基本上插入了最新的refund_request插入中的信息,并插入该信息而不是所选的信息。然而,已选择的那个仍然会从表中删除。

这是用户点击“接受”时触发的代码

$custname = $_SESSION['custname'];
$prodname = $_SESSION['prodname'];
if(isset($_GET['acceptid'])) {
$accept = $_GET['acceptid'];
/* Query to do whatever here */
$wpdb->print_error();
$wpdb->insert("wp_acceptedrequests", [
  "customer_name" => "$custname",
    "name_product" => "$prodname",
    "date" => date("Y/m/d/G:i:sa") ,
]);
$wpdb->print_error();
$wpdb->query("DELETE FROM wp_refundrequests WHERE request_id = $accept");
}

我不得不说我不知道​​为什么它不想插入所选的请求,如果有什么令人困惑的地方请评论,我会尽力澄清。

提前致谢!

最佳答案

您在 foreach 循环中重新定义 $_SESSION,因此在 foreach 结束时它将等于最后一个,将每一行参数传递给它就是像这样接受链接

 "<li class='refundaccepts'><a href='admin-page?acceptid=" . $row['request_id']."&custname=".$row['customer_name']."&prodname=".$row['product_name']."'>Accept</a></li></div>";

然后以与获取 $accept-ID 相同的方式调用它

if(isset($_GET['acceptid'])) {
$accept = $_GET['acceptid'];
$custname = $_GET['custname'];
$prodname = $_GET['prodname'];

注意:我使用我的手机,因此请确保代码的 href 部分是否存在语法错误

关于php - 使用 $wpdb->insert 将错误数据插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52662655/

相关文章:

php - 如何隐藏表格行?

php - 保护数据库中的密码字段

wordpress - 如何在表格中显示 WordPress 自定义页面的 the_meta()

php - 删除空格和任何非字母数字的内容

php - 将 MySQL 日期结果转换为月份名称并创建变量

php - 简单的准备好的语句不起作用

php - 在 PHP 中用新内容替换旧内容

mysql - 从VM实例访问远程MySQL数据库

jquery - Wordpress ...强制第 3 方插件使用主题字体样式 css?

wordpress - WP 全部导出 : how to pass exported data through PHP function