global $ wpdb отображает данные мусора вместе с результатами моего запроса select - PullRequest
0 голосов
/ 17 января 2019

У меня есть пользовательская таблица в базе данных MySQL, которую я пытаюсь запросить, используя global $wpdb. Я определил свой запрос, используя информацию, доступную из следующих двух источников:

  1. https://codex.wordpress.org/Class_Reference/wpdb
  2. https://wordpress.stackexchange.com/questions/233021/display-data-on-word-press-site-posts-and-pages-from-mysql-table

Вот как данные в phpMyAdmin :

data in phpMyAdmin

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

Я хочу, чтобы он отображался в виде таблицы / аналогично тому, как он отображается в phpMyAdmin , где я могу связать SrNo , Соединение и т. Д. с другими столбцами в таблице:

add_shortcode('wpse_233031_shortcode', function(){
    global $wpdb;
    $myrows = $wpdb->get_results( "SELECT `SrNo`, `Compound` FROM PNaphtha");
    //$results = $wpdb->get_results( "SELECT `SrNo`, `Compound` FROM PNaphtha" );
    ob_start();
    echo var_dump($myrows );
    //return ob_get_clean(); 
});

Я получаю следующие результаты

enter image description here

array(10) {
    [0]=> object(stdClass)#6275 (2) {
        ["SrNo"]=> string(1) "2" 
        ["Compound"]=> string(12) "abietic acid"
    }
    [1]=> object(stdClass)#6274 (2) { 
        ["SrNo"]=> string(1) "3"
        ["Compound"]=> string(12) "acenaphthene"
    }
    [2]=> object(stdClass)#6273 (2) {
        ["SrNo"]=> string(1) "4"
        ["Compound"]=> string(6) "acetal"
    }
    [3]=> object(stdClass)#6272 (2) {
        ["SrNo"]=> string(1) "5"
        ["Compound"]=> string(12) "acetaldehyde"
    }
    [4]=> object(stdClass)#6271 (2) {
        ["SrNo"]=> string(1) "6"
        ["Compound"]=> string(9) "acetamide"
    }
    [5]=> object(stdClass)#6270 (2) {
        ["SrNo"]=> string(1) "7"
        ["Compound"]=> string(11) "acetanilide"
    }
    [6]=> object(stdClass)#6269 (2) {
        ["SrNo"]=> string(1) "8"
        ["Compound"]=> string(11) "acetic acid"
    }
    [7]=> object(stdClass)#6268 (2) {
        ["SrNo"]=> string(1) "9"
        ["Compound"]=> string(16) "acetic anhydride"
    }
    [8]=> object(stdClass)#6267 (2) {
        ["SrNo"]=> string(2) "10"
        ["Compound"]=> string(7) "acetone"
    }
    [9]=> object(stdClass)#6266 (2) {
        ["SrNo"]=> string(2) "11"
        ["Compound"]=> string(19) "acetone cyanohydrin"
    }
}

Хотя вся информация, которую я запрашивал, доступна здесь, есть также много ненужной информации.

Я попробовал следующие изменения, но, похоже, ни одно из них не работает

$myrows = $wpdb->get_row( "SELECT `SrNo`, `Compound` FROM PNaphtha"); // get_row

output_type changed to ARRAY_A, ARRAY_N, OBJECT_K

echo var_dump changed to echo array

Буду признателен, если вы могли бы посоветовать, как получить результаты для форматирования в виде таблицы или массива. Кроме того, я поместил приведенный выше код в файл functions.php моей темы. Есть ли лучший способ сделать это?

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Итак, вы получаете объект в качестве вывода, поэтому вы видите эту информацию там.Сделайте следующее изменение.Добавьте ARRAY_A (ассоциативный массив) в конец вызова вашей функции.

$wpdb->get_results( "SELECT `SrNo`, `Compound` FROM PNaphtha", ARRAY_A);

Это предотвратит возврат вашего запроса как объекта, и ваш var_dump будет выглядеть так, как вы ожидаете.

0 голосов
/ 18 января 2019

Это может быть потому, что вы используете var_dump

Функция var_dump отображает структурированную информацию о переменных / выражениях, включая их тип и значение.

Я бы порекомендовал использовать print_r

print_r () отображает информацию о переменной в удобочитаемом для человека виде. Значения массива будут представлены в формате, который показывает ключи и элементы.

Вы должны увидеть изменения, если вы измените

var_dump($myrows )

до

print_r($myrows)

Вот как я сделал то, что вы хотите (не повторяя результат):

$sql = "SELECT `Srno`,`compound` FROM `pnaphtha`";
$result = $conn->query($sql);

echo "<table>";
while($row = $result->fetch_assoc()) {
        echo "<tr><td>".$row['Srno']."</td><td>".$row['compound']."</td></tr>";
    }

 echo "</table>";

Однако, так как вы используете WordPress, я подозреваю, что это будет что-то вроде

global $wpdb;
$sql =  "SELECT `SrNo`, `Compound` FROM PNaphtha";
//you may need to add ARRAY_A

$myrows = $wpdb->get_results($sql);

echo "<table>";
while($myrows = $result->fetch_assoc()) {
    echo "<tr><td>".$myrows['SrNo']."</td><td>".$myrows['Compound']."</td></tr>";
}
echo "</table>";

На самом деле я не могу протестировать версию WordPress, так как не могу установить установку WordPress haha ​​

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