我在MySQL数据库中有一个自定义表,我正在尝试使用global $wpdb
进行查询。我已使用以下两个来源提供的信息定义了查询:
这是 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();
});
我得到以下结果
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
文件中。有更好的方法吗?
答案 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安装哈哈