我有一个简单的查询,我试图绑定到一个fetch循环中的三个变量。不幸的是,它拿起前两列并将第3列留作空字符串......我不知所措......有什么想法吗?
$db = new mysqli("host.com", "username", "password", "db_name");
$q = "SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE (meta_key='first_name' OR meta_key='last_name') AND meta_value != '';";
$stmt = $db->prepare($q);
$stmt->execute();
$stmt->bind_result($col1,$col2,$col3);
while ( $stmt->fetch() ) {
echo $col1." - ".$col2." - ".$col3."<br />";
}
输出:
2 - first_name -
2 - last_name -
5 - last_name -
5 - first_name -
6 - first_name -
6 - last_name -
8 - last_name -
8 - first_name -
9 - first_name -
9 - last_name -
答案 0 :(得分:2)
终于弄明白了。 meta_value字段是 longtext 数据类型。显然,如果您在使用store_result之前尝试绑定longtext字段,PHP将返回一个空字符串,而不会给出任何类型的错误或警告。
以下是工作代码:
$db = new mysqli("host.com", "username", "password", "db_name");
$q = "SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE (meta_key='first_name' OR meta_key='last_name') AND meta_value != '';";
$stmt = $db->prepare($q);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($col1,$col2,$col3);
while ( $stmt->fetch() ) {
echo $col1." - ".$col2." - ".$col3."<br />";
}