PDO - 在准备好的声明中获取列数,是否可能?

时间:2014-03-02 19:04:13

标签: php sql pdo metadata calculated-columns

我正在尝试优化我的数据库访问类,以便在处理表单数据时提供帮助。我想要完成的是:

  1. 将SQL查询添加到我的连接对象。
  2. 通过命令和参数对SQL查询进行分类。
  3. 使用分类数据自动将required属性添加到给定的表单输入标记(并且,可选地,插入给定或相应的RegEx以进行高级匹配)。
  4. 添加一个会话驱动的临时对象,其中包含表单成员,以检查一组规则或匹配项的完整性和合规性。
  5. 在满足所有给定要求后执行SQL查询。
  6. 然后,继续(在我的实际代码中)的方式是这样的:

    if (!empty($data = \Helpers\Forms\getData($_POST))) {
        if (!empty($rules = \Helpers\Forms\getRules($_POST))) {
            if ($data->isCompliant($rules)) {
                // rest continues here...
            }
        }
    }
    

    到目前为止,我已经完成了步骤1,3和5。我得到了部分实现的第2步和第4步,因为我需要一种方法对给定的准备好的SQL查询进行元数据扫描,这就是我有点迷失的地方。

    根据PDO手册,columnCount()方法在调用execute()方法之前无法提供准确的结果。

    然而,execute方法实际上执行了查询,我不想这样做,因为如果它是一个SELECT查询,它实际上是可以的,但不适用于INSERT,DELETE,UPDATE或任何其他类型的查询。 / p>

    所以我的问题是......有没有办法在不执行的情况下获取给定SQL查询的列数?或者......有没有办法执行给定SQL查询的虚拟执行以获取此列计数值?

0 个答案:

没有答案