我在 WordPress MultiSite 上有一个名为“ihn_2_frm_item_metas”的自定义 WordPress 表,用于表单条目。
数据库表截图在这里:https ://www.dropbox.com/s/ex54qxxohkexg5t/mysql.png
现在,有两个条目。每个条目都有自己唯一的“item_id”(在这种情况下,Bob Marley 的条目的 id 为 10,而 Molly Dolly 的条目的 id 为 9)。这些条目也对应于实际的 WordPress 用户(他们的用户名是他们的电子邮件地址,他们的密码是“test”)。条目 ID 与他们的 WordPress 用户 ID 不同。
我已使用密码“test”以“bob@marley.com”身份登录。
在博客的主页上,我只想为当前登录的用户显示“meta_value”列中的所有项目。
我想分两步做到这一点:
- 查找当前登录用户的电子邮件地址 ("bob@marley.com")。
- 在匹配的电子邮件地址的同一行中找到该用户的表单条目 (10) 的“item_id”。
这是我想出的代码:
global $wpdb;
global $current_user;
get_currentuserinfo();
$email = $current_user->user_email;
$id = $wpdb->get_var( " SELECT item_id FROM ihn_2_frm_item_metas WHERE meta_value = $email " );
$client_meta = $wpdb->get_results(" SELECT * FROM ihn_2_frm_item_metas WHERE item_id = $id " );
echo '<p> $email is a ' . gettype($email) . '</p>';
echo '<p> $id is a ' . gettype($id) . '</p>';
echo '<p>The current logged in user is ' . $email . '.</p>';
echo '<p>The current form entry id is ' . $id . '.</p>';
echo "<ul>";
foreach ($client_meta as $value) {
echo '<li>' . $value->meta_value . '</li>';
}
echo "</ul>";
我有两个gettype()
语句只是为了确认我的两个变量$email
和$id
都是字符串。
这是我的代码的输出:
$email 是一个字符串。
$id 是 NULL。
当前登录的用户是 bob@marley.com。
当前的表单条目 id 是 .
注意$id
是NULL
. 让我感到困惑的是,当我将$id
变量更改为此(用$email
“bob@marley.com”替换变量)时:
$id = $wpdb->get_var( " SELECT item_id FROM ihn_2_frm_item_metas WHERE meta_value = 'bob@marley.com' " );
我的输出正是我所需要的:
$email 是一个字符串。
$id 是一个字符串。
当前登录的用户是 bob@marley.com。
当前表单条目 ID 为 10。
- 鲍勃
- 马利
- bob@marley.com
- 测试
- 8
我哪里出错了?