В настоящее время я работаю над проектом WordPress, в котором есть плагин WooCommerce для магазина. Однако вся информация о выставлении счетов из заказов поступает в таблицу wp_postmeta, где вся информация сохраняется в том же столбце «meta_value».
У меня есть форма, которую клиент может заполнить, используя свой номер заказа, имя и номер почтового ящика, и после заполнения этого поля его заказ будет отображаться на сайте.
Следовательно, в своем запросе я хотел бы только проверить, верны ли введенные пользователем номер заказа, имя и номер сообщения, и мне больше ничего не нужно из столбца.
Я сделал тестовый заказ со своими учетными данными, и на данный момент мой запрос выглядит следующим образом, но он находит два результата, потому что в таблице wp_postmeta есть два поля, которые имеют тот же номер заказа и то же имя в них, что и заказ:
$ordernumber = $_POST['ordernmbr'];
$orderfirstname = $_POST['firstname'];
$orderpostnumber = $_POST['postnmbr'];
$sql = $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}postmeta
WHERE post_id = %d AND meta_value = %s",
$ordernumber, $orderfirstname);
$res = $wpdb->get_results($sql, ARRAY_A);
Спроси меня, если что-то неясно, я довольно плохо объясняю вещи!
РЕДАКТИРОВАТЬ: обновленный запрос после получения справки от Vel, все еще не работает, как задумано, так как запрос не хочет найти никаких результатов.
$sql = $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}postmeta
WHERE post_id = %d AND (meta_value = %s AND meta_key ='_billing_first_name' AND meta_value = %s AND meta_key ='_billing_postcode') ",
$ordernumber, $orderfirstname, $orderpostnumber );
$res = $wpdb->get_results($sql, ARRAY_A);