如何在PDO中的query()中使用fetch

时间:2013-05-23 19:27:05

标签: php pdo

如何直接在query()中获取列?

类似的东西:

$userID = _openConnection()->query('SELECT id FROM users WHERE login = "' . admin
. '"', PDO::FETCH_COLUMN, 0);

而不是

$userID = _openConnection()->query('SELECT id FROM users WHERE login = "' . admin 
. '"')->fetchColumn();

问题是如果语句没有返回任何内容,调用fetchColumn()会抛出致命错误,我认为如果我在Query()中执行它,我会得到错误。

谢谢!

PS:第一个语句var_dump

object(PDOStatement)#2 (1) { ["queryString"]=> string(42) "SELECT id FROM users WHERE login = "admin"" } 

1 个答案:

答案 0 :(得分:0)

您对PDO的使用是非常错误的。

  • 您只需创建一个连接并一直使用
  • 你必须使用准备好的陈述
  • 链接方法没有意义 - 它会让你的代码变得丑陋。垂直书写,不是水平书写。如果您想缩短代码 - 创建功能

    function fetchCol()
    {
        global $pdo;
        $params = func_get_args();
        $query = array_shift($params);
        $stmt = $pdo->prepare($query);
        $stmt->execute($params);
        return $stmt->fetchColumn();
    }
    

以这种方式使用

$pdo = _openConnection(); // do it only ONCE per application

$userID = fetchCol('SELECT id FROM users WHERE login = ?',admin); 

这种方法将使您的核心真正简短而有意义且可读。