我遇到了一些麻烦。我试图在自定义mysql查询foreach中获取user display\\u name,但失败了。我试过三种方法。new WP_User
, get_user_by
和get_userdata
. 但他们只能得到结果$user->display_name
表中ID=1wp_users
(管理)。无法获取任何$user->display_name
哪个ID=2(3,4…)在表中wp_users
. 我应该怎么做才能解决这个问题?非常感谢。
$results = mysql_query("SELECT * FROM custom_table");// query connect from a custom database, not in database wp.
while($row = mysql_fetch_array($results)) {
global $wpdb;
$user = new WP_User($row[\'user_id\']);
//$user = get_user_by(\'id\',$row[\'user_id\']);
//$user = get_userdata($row[\'user_id\']);
var_dump($user);
}
edit
这是我的完整代码。相同代码,如果
SELECT * FROM test_table where id = 1
我可以获取用户显示名称
admin
, 但如果我尝试
SELECT * FROM test_table where id = 3
我无法获取显示名称,返回值为空(我已检查
wp_users
表,ID=3确实有一个成员。)
header("Content-type: text/html; charset=utf-8");
$mysql_hostname = "localhost";
$mysql_user = "root";
$mysql_password = "root";
$mysql_database = "test_db";
$db = mysql_connect($mysql_hostname, $mysql_user, $mysql_password)
or die(\'Error connection to database server: \' . mysql_error());
mysql_select_db($mysql_database, $db)
or die(\'Error connection to database server: \' . mysql_error());
mysql_query("SET NAMES utf8");
$results = mysql_query("SELECT * FROM test_table where id = 3");
while($row = mysql_fetch_array($results)) {
//echo $row[\'id\']; I can get the $row[\'id\'] value.
$foo_db = new wpdb(\'root\',\'root\',\'wp\',\'localhost\');
$foo_result = $foo_db->get_results("SELECT * FROM `wp_users` WHERE ID = \'".addslashes($row[\'id\'])."\'",OBJECT);
foreach($foo_result as $user){
var_dump($user);
}
}
顺便说一句:test\\u表非常简单,只有1个字段,记录用户ID。(ID:1-ID:33)
最合适的回答,由SO网友:Brian Fegter 整理而成
您应该使用wpdb对象的所有优点。
#Create a new WPDB object for your custom DB
$foo_db = new wpdb(\'username\',\'password\',\'database\',\'localhost\');
$query = (\'SELECT * FROM custom_table\');
#Use the get_results method - You can return OBJECT(default), OBJECT_K, ARRAY_A, ARRAY_N
$results = $foo_db->get_results($query, OBJECT);
foreach($results as $row){
$user = new WP_User($row->user_id);
}
您可以在此处阅读更多内容:
http://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results请注意,如果要从使用相同凭据的同一服务器中进行选择,请尝试以下操作,以免嵌套另一个相同的连接:
global $wpdb;
$query = \'SELECT * FROM db_name.custom_table\';
$results = $wpdb->get_results($query);
希望这对你有帮助!