【问题标题】:Subquery on PRAGMA table_info()PRAGMA table_info() 上的子查询
【发布时间】:2012-05-14 04:53:04
【问题描述】:
$tbl = 'brand';
$sth = self::$db->prepare('PRAGMA table_info(SELECT tbl_name FROM sqlite_master WHERE tbl_name = ? LIMIT 1)');
$sth->execute(array($tbl));
$obj = $sth->fetch(PDO::FETCH_OBJ);
$sth->closeCursor();
return $obj;

此脚本返回Fatal error: Call to a member function execute() on a non-object。我假设错误是由语句中的语法错误造成的,而brand 表存在于数据库中。

我的问题是,是否有另一种方法可以在 SQLite3 中执行此类语句? 我想从用户输入中获取给定表名的表信息。

【问题讨论】:

    标签: php sqlite subquery


    【解决方案1】:

    只需使用字符串连接创建并执行以下 SQL:

    PRAGMA table_info(品牌)

    不要使用子查询来获取表名。

    【讨论】:

    • 表名和列名不能作为参数
    • 对不起,你是对的。 table_info 的参数不能是字符串文字,所以我之前的回答不正确。我现在已经更正了我的答案。
    • 是的,但是给定的表名是用户的输入
    • 如果您需要验证表名,您需要先对 sqlite_master 执行单独的查询。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多