stmt bind_result()不绑定所有列

时间:2014-12-23 21:50:25

标签: php mysql mysqli

我有一个简单的查询,我试图绑定到一个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 - 

1 个答案:

答案 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 />";
      }