无法执行php预处理语句

时间:2017-10-09 13:08:47

标签: php

我无法开展工作的代码应该执行以下操作:

  1. 从文件中读取SQL语句
  2. 从中做出准备好的陈述
  3. 执行准备好的陈述
  4. 非工作代码:

        $sql = file_get_contents($root . '/data/init.sql');
        $pdo = new PDO($dsn);
        $stmt = $pdo->prepare($sql);
        $stmt->execute();
    

    工作代码

    $sql = file_get_contents($root . '/data/init.sql');
    $pdo = new PDO($dsn);
    $result = $pdo->exec($sql);
    

    请在非工作代码段中指出错误。

1 个答案:

答案 0 :(得分:-1)

查看你的sql文件名 - 我假设你有一个DB init脚本。 也许是为了测试 无论如何,如果它是一个新的数据库/表,那么你就无法准备查询不存在的模式(表)。 原因是PDO :: prepare实际上需要与数据库协商查询的最佳执行和缓存。

另外 - documentation说:

  

"为将发布多个的语句调用prepare [....]   使用不同参数值的时间可以优化性能   你的申请[...]"

看起来你的init SQL没有参数化。 总而言之,对于这个特定的片段,您甚至不需要准备电话。

放弃它。