2014-03-28 46 views
0
require 'db/connect.php'; 
if ($result = $db->query("SELECT last_name +' '+ first_name as full_name, bio FROM people")) { 
    if ($count = $result->num_rows) { 
     echo '<p>', $count , '</p>'; 

     // while ($rows = $result->fetch_object()) { 
      // print_r($rows); 
      // echo '<br/>'; 
     // } 

     while ($rows = $result->fetch_object()) { 
      echo $rows->full_name, ' ' , $rows->bio, '<br />'; 
     } 

     $result->free(); 
    } 
} else { 
    die($db->error); 
} 

数据库表中的人员包含两列数据,其中列是id,first_name,last_name,bio和created。从数据库中打印的结果不是所期望的结果

第1行:id = 1,first_name = kelly,last_name ='wafukho',bio =计算机科学家。
第2行:id = 2,first_name = gonzaga,last_name ='situma',bio =平面设计师。

当下面的查询运行时,它给了我第1行的计算机科学家和第2行的0计算机科学家。可能是什么原因呢?是我的SQL语法或PHP处理对象的问题? 我正在使用mysql数据库。

+0

看起来你不能在字符串连接中使用'+'运算符 - 你的数据库试图将名称加上数字并且加上零。有些数据库允许这样做,有些则不允许,所以您需要指出您正在使用的数据库。 – Kryten

+1

您正在提取对象,因此您必须在查询中选择一个行集限制1 –

回答

2

您应该使用CONCAT功能的加入域

SELECT CONCAT(last_name, ' ', first_name) as full_name, bio FROM people 
+0

不,@Awlad是正确的。 – ElmoVanKielmo

0

你取的对象,所以你必须选择一个查询行集极限1。

if ($result = $db->query("SELECT last_name +' '+ first_name as full_name, bio FROM people limit 1")) { 

或获取多行数组。