假设我有一个PDOStatement
对象通过PDO->query($query)
生成,是否可以获取它执行的表?
这样的事情:
<?php
$statement = $pdo->query('SELECT * FROM `foo`;');
echo $statement->xyz;
// foo
我完全知道您可以使用$query->getColumnMeta(0)['table']
来执行此操作,但是as mentioned by the docs,这不是很安全。这需要适用于所有PDO驱动程序。
答案 0 :(得分:1)
您可以使用检索关联数组的PDOStatement来检索表的名称。值['name']是表的名称。
suggestions.length
答案 1 :(得分:0)
您可以查看查询字符串:
$statement->queryString
请记住,SQL查询可能引用多个表,或者没有表,因此没有“表被执行”。您可以在查询字符串上使用正则表达式来查找标准查询引用的第一个表(SELECT
,INSERT
,UPDATE
,DELETE
),但这可能不完美
或者,使用模型访问您的数据,您将始终知道模型定义访问了哪些表。
答案 2 :(得分:0)
您是否可以简单地存储查询中使用的字符串并使用简单的字符串操作来访问表?