选择使用pdo获得的数组的一个列的一个值

时间:2015-06-25 11:31:27

标签: php mysql pdo

我有以下代码:

$foo = $bdd->prepare($qry);
$foo->execute();
$result = $foo->fetchAll();

$qry中,我在表SELECTJOIN(列beatles b)之间有一个status s status_id,结果如下:

代码:

b.id    b.firstname    b.lastname    b.status_id   s.status_id     s.status

0       John           Lennon        0             0               Mort
1       Paul           McCartney     1             1               Vivant
2       Ringo          Starr         1             1               Vivant
3       George         Harrison      0             0               Mort

(第一行是表格中的列名称,它不在查询结果中)

我想在php中只选择ringo starr的s.status。我怎么能这样做?

由于

3 个答案:

答案 0 :(得分:2)

如果要检索Ringo Starr的状态值,但需要该页面中其他字段的值,那么(假设数组已经通过id返回索引),您可以使用{{1}访问它}。否则,请将select语句更改为仅选择$result[2]['status']id的值。

作为旁注,在SELECT语句中,您需要为statusb.status_id提供可能的别名;当你加入时,列名被采用,表名基本上被忽略了 - 所以像s.status_id这样的东西会确保你得到这两者的正确值。你当然可以做到这一点 - 从你给出的专栏名称来看,它看起来好像你可能没有。

答案 1 :(得分:2)

我不确定您是想从现有结果中选择一列还是发出只能获得所需内容的查询。但更好定义的查询听起来最明智

SELECT 
  [ your joins etc ]

WHERE b.firstname = 'Ringo'
  AND b.lastname = 'Starr'

或者,如果您想从现有结果中获取Ringo Starr条目

foreach ( $resultats as $result ) {
    if ( $result['firstname'] == 'Ringo' && $result['lastname'] == 'Starr' ) {
        echo 'Got him';
    }
}

答案 2 :(得分:0)

  1. 添加满足您需求的条件的WHERE子句
  2. alter fields子句只留下你需要的一个
  3. 使用fetchColumn()代替fetchAll()
  4. 你已经开始了。