php - MySQL 查询不关心用户输入之一

标签 php mysql wordpress woocommerce

嘿伙计们!我目前正在开发一个 wordpress/woocommerce php 代码,客户可以通过一些表格提出退款请求。我快完成了,但我在该过程的第一部分遇到了一些问题。

下面的代码应接收客户输入的订单号、名字及其邮政编码,并检查数据库中是否存在具有所有相同信息的订单。但是,现在它似乎并不关心邮政编码,无论您在邮政编码字段中写入什么,只要前两个正确,用户就可以进入下一部分。

在这里,我想通知一下,在 WooCommerce wp_postmeta 表(从中获取客户数据)中,用户的名字和邮政编码都位于名为“meta_value”的同一列中,因此我尝试将下面的代码,但它似乎不起作用。

<form action="" method="post" id="orderinfo">
<input type="text" placeholder="Tilausnumero" name="ordernmbr" required>
<input type="text" placeholder="Etunimi" name="firstname" required>
<input class="amountone" type="number" placeholder="Postinumero" name="postnmbr" required>
<input type="hidden" name="page" value="1">
<input type="submit" class="signupbtn" name="submit" value="Seuraava">
</form>

if(isset($_POST['submit'])) {
global $wpdb;
// Taking the user input into variables
$ordernumber = $_POST['ordernmbr'];
$orderfirstname = $_POST['firstname'];
$orderpostnumber = $_POST['postnmbr'];
$page = $_POST['page'];
// Sanitizing
$ordernumber = stripslashes_deep($ordernumber);
$orderfirstname = stripslashes_deep($orderfirstname);
$orderpostnumber = stripslashes_deep($orderpostnumber);

// Query that searches for order data from db
$sql = $wpdb->prepare("SELECT post_id FROM wp_postmeta
WHERE post_id = %d AND meta_key in ('_billing_first_name', '_billing_postcode')
and meta_value in ('%s', '%d')

group by post_id", $ordernumber, $orderfirstname, $orderpostnumber);

$res = $wpdb->get_results($sql, ARRAY_A);
}

有人能告诉我哪里出错了,并告诉我如何正确地做到这一点吗?

提前致谢。

最佳答案

为什么不使用 woocommerce 内置函数?

$ordernumber = stripslashes_deep($ordernumber);
$orderfirstname = stripslashes_deep($orderfirstname);
$orderpostnumber = stripslashes_deep($orderpostnumber);

$args = array(
    'id' => $ordernumber,
    'billing_first_name' => $orderfirstname,
    'billing_postcode' => $orderpostnumber,
);
$orders = wc_get_orders( $args );
var_dump($orders);

或者甚至只是使用,获取订单 - 因为 ID 是唯一的? https://docs.woocommerce.com/wc-apidocs/function-wc_get_order.html

关于php - MySQL 查询不关心用户输入之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52734717/

相关文章:

wordpress - 需要 Woocommerce 仅允许购物车中添加 1 个产品。如果购物车中已有产品,并且添加了另外 1 个产品,则应删除之前的 1 个产品

php - cakephp 3.2 中同一张表上的模型关联(用于菜单和子菜单概念)

php - 从前端上传自定义帖子类型中的问题

javascript - 类函数中 php 的轻松迭代

mysql - 如何在第二个表中使用主键作为 custId 编号

Javascript 在直接放置时运行,而不是在文件调用时运行

php - Mysql插入和更新

php - PHP中上传限制和发帖限制的上限

php - 在 MySQL 中使用 distinct 函数

css - WordPress,在 <head> 或标签内转义 CSS 属性值