使用$ wpdb-> insert

时间:2018-10-05 09:38:50

标签: 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

因此,它基本上是从最新的return_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");
}

我不得不说我不知道​​为什么它不想插入所选的请求,如果有什么令人困惑的地方,请发表评论,然后尝试清除它。

谢谢!

2 个答案:

答案 0 :(得分:2)

您在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部分中是否存在语法错误

答案 1 :(得分:0)

请尝试这样并注释掉会话变量。

if(isset($_GET['acceptid'])) {
  $accept = $_GET['acceptid'];
  $accepted_requests = $wpdb->get_results("SELECT * FROM wp_refundrequests WHERE id = $accept", ARRAY_A);

  if( !empty($accepted_requests) ) {
    $insert = $wpdb->insert("wp_acceptedrequests", $accepted_requests);
    if($insert) {
      $wpdb->query("DELETE FROM wp_refundrequests WHERE request_id = $accept");      
    }
  }
}