0

花了最后两个小时试图让这个 $wpdb->get_results 以与 ($row = mysql_fetch_array($result)) 相同的方式返回一个数组。我已经尝试了所有方法,get_col、get_row 等……浏览了 wp 法典并尝试了他们所有的示例,但实际上没有任何效果。一切都返回 Array ( ) 或 NULL。我在这里失去理智,非常感谢任何帮助。

我最初在 PDO 中编写了这个插件,然后意识到 wordpress 不支持它。我不是 wpdb sql 的粉丝。这里是;

$query = $wpdb->get_results("SELECT * FROM admin WHERE user_id = '$userid'");
foreach ($query as $row) {
echo $row->date;
}
4

2 回答 2

6

好吧,您一定在http://codex.wordpress.org/Class_Reference/wpdb中通过了这个:

三个预定义常量之一。默认为对象。

  • OBJECT - 结果将作为对象输出。

  • ARRAY_A - 结果将作为关联数组输出。

  • ARRAY_N - 结果将作为数字索引数组输出。

您可以按如下方式编写代码:

$result_array = $wpdb->get_results("SELECT * FROM admin WHERE user_id = '$userid'", ARRAY_A);
foreach( $result_array as $key -> $value ) {
    echo "Key = " . $key  . "<br />";       // outputs field name
    echo "Value = " . $value . "<br />";    // outputs the value
}

不要忘记使用$wpdb->prepare() http://codex.wordpress.org/Class_Reference/wpdb#Protect_Queries_Against_SQL_Injection_Attacks逃避所有输入

于 2013-09-09T21:04:59.723 回答
1

首先要wpdb在插件中使用类,您需要包含wp-blog-header.php在开始或wp-load.php

然后您需要将 wpdb 定义为全局以访问其所有功能

global $wpdb;
$query = $wpdb->get_results("SELECT * FROM admin WHERE user_id = '$userid'");

确保您包含上述文件的正确路径

如果要将结果作为数组获取,则需要将查询中的第二个参数传递为ARRAY_A or ARRAY_N

$query = $wpdb->get_results("SELECT * FROM admin WHERE user_id = '$userid'",ARRAY_N);

默认情况下,它设置为返回OBJECT

于 2013-09-09T20:28:45.160 回答