-1

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

就像是:

$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"" } 
4

1 回答 1

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); 

这种方法将使您的核心非常简短,但有意义且易读。

于 2013-05-23T19:35:20.010 回答