从$ wpdb返回行 - 失去理智

时间:2013-09-09 20:24:53

标签: php wordpress

花了最后两个小时试图让这个$ wpdb-> get_results以相同的方式返回一个数组($ row = mysql_fetch_array($ result))。我已经尝试了所有东西,get_col,get_row等...通过wp codex并尝试了所有他们的例子,几乎没有任何作用。 Everything返回Array()或NULL。我在这里失去了理智,任何帮助都非常感激。

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

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

2 个答案:

答案 0 :(得分:6)

你必须在http://codex.wordpress.org/Class_Reference/wpdb

中越过这一点
  

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

     
      
  • 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

答案 1 :(得分:1)

首先在插件中使用wpdb类,您需要在开头包含wp-blog-header.phpwp-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