全局$ wpdb显示垃圾数据以及我的选择查询的结果

时间:2019-01-17 20:56:15

标签: php mysql wordpress serialization

我在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 Compound strong>等与表格中的其他列:

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 :(得分:2)

因此,您将对象作为输出,这就是为什么在其中看到该信息的原因。进行以下更改。在函数调用的末尾添加“ ARRAY_A”(关联数组)。

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

这样可以避免查询作为对象返回,并且var_dump的外观将与您期望的一样。

答案 1 :(得分:1)

可能是因为您使用的是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安装哈哈