2014-02-13 3 views
1

Я пытался оборачивать голову, почему мой запрос не возвращает никаких результатов из моей таблицы. Имя моей таблицы - wp_user_orders. Столбец user_name находится в этой таблице. Оба готовят и запрашивают обратные пустые массивы. Результат get с запросом внутри возвращает ошибку базы данных.wpdb SQL Неизвестный столбец «имя пользователя» в ошибке «where clause»

PHP:

<?php 
    $dirName1 = 'C:/wamp/www/c2c/wp-content/themes/flawless-v1-01'; 
    $dirName2 = 'C:/wamp/www/c2c'; 
    require_once($dirName1.'/config/setup.php'); 
    require_once($dirName2.'/wp-config.php'); 
    require_once($dirName2.'/wp-load.php'); 
    require_once($dirName1.'/include/function/encryption-class.php'); 
    require_once($dirName1.'/include/function/price-calculations.php'); 

    define('WP_DEBUG', true); 
    $wpdb->show_errors(); 
    $tableName = $wpdb->prefix . "user_orders"; 
    $user = wp_get_current_user(); 
    $userId = $user->ID; 
    $userName = $user->user_login; 
    echo $tableName . ': ' . $userId . ': '. $userName; 
    echo var_dump($tableName); 
    echo var_dump($userId); 
    echo var_dump($userName); 
    $myQuery = $wpdb->prepare("SELECT * FROM $tableName WHERE user_name = %s", $tableName, $userName); 
    $results = $wpdb->get_results($wpdb->prepare("SELECT * FROM %s WHERE user_name = %s", $tableName, $userName), ARRAY_A); 
    $results2 = $wpdb->get_results($wpdb->query("SELECT * FROM $tableName WHERE user_name = $userName")); 
    print_r($results2); 
    echo var_dump($results2); 
    print_r($results); 
    echo var_dump($results); 

    $wpdb->print_error; 


?> 

Мой PHP показывает:

wp_user_orders: 2: kronus 

string 'wp_user_orders' (length=14) 

int 2 

string 'kronus' (length=6) 

WordPress database error: [Unknown column 'kronus' in 'where clause'] 
SELECT * FROM wp_user_orders WHERE user_name = kronus 

null 

Array () 

array (size=0) 
    empty 

У меня есть чувство, что я просто отсутствует что-то очевидное, но я в тупик.

ОБНОВЛЕНО:

Обновленный мой неправильный подготовленное заявление.

Предыдущие:

$wpdb->prepare("SELECT * FROM $tableName WHERE `user_name` = %s", $tableName, $userName) 

Новый:

$wpdb->prepare("SELECT * FROM %s WHERE `user_name` = %s", $tableName, $userName) 

Новых ошибки от изменения:

WordPress database error: [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''wp_user_orders' WHERE `user_name` = 'kronus'' at line 1] 
SELECT * FROM 'wp_user_orders' WHERE `user_name` = 'kronus' 

ответ

0

Вы не либо со ссылкой на имя пользователя или получения запроса с переменным I предложит сделать это таким образом

$results = $wpdb->get_results($wpdb->prepare("SELECT * FROM $tableName WHERE user_name = %s",$username)); 
+0

Это вернуло некоторые результаты успешно! У вас есть какая-то подсказка, почему мой обновленный подготовленный оператор в моем редактировании не работает? – Conner

+0

Поскольку имя-табло является частью структуры запроса, а не значением данных, поэтому оно не должно передаваться в качестве подготовленной переменной. – Anigel

+0

Ничего себе ... смущающая ошибка там. Спасибо Анигель! – Conner

Смежные вопросы