MySQL-запрос не заботится об одном из пользовательских вводов - PullRequest
0 голосов
/ 10 октября 2018

Эй, ребята!В настоящее время я работаю над PHP-кодом WordPress / WooCommerce, где клиент может сделать запрос на возврат через несколько форм.Я почти закончил, но у меня возникла небольшая проблема с первой частью процесса.

Приведенный ниже код должен содержать введенный клиентами номер заказа, имя и их почтовый индекс,и проверьте, есть ли заказ со всей той же информацией в базе данных.Однако сейчас, похоже, его не волнует почтовый индекс, и что бы вы ни записали в поле почтового индекса, если первые два верны, пользователь пропускает следующую часть.

Здесь я хочу сообщить, что в таблице wp_postmeta WooCommerce (из которой извлекаются данные о клиентах) имя пользователя и почтовый индекс находятся в одном столбце с именем 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);
}

Кто-нибудь сможет показать мне, где я иду не так, и показать мне, как это сделать правильно?

Спасибо ввперед.

1 Ответ

0 голосов
/ 10 октября 2018

Почему бы не использовать встроенные функции 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);

Или даже просто использовать, получить заказ - так как идентификатор уникален?https://docs.woocommerce.com/wc-apidocs/function-wc_get_order.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...