当前位置: 首页 > 面试题库 >

如何使用PHP :: PDO使用变量执行mysql脚本?

唐宏壮
2023-03-14
问题内容

我无法执行长脚本,PDO引发异常:

SQLSTATE[HY000]: General error

如果我提交的脚本不包含变量,它将运行而不会出现问题。相同的脚本在phpmyadmin界面上运行。

这是我的代码段:

 try {
 $dsn = "mysql:host=" . DB_SERVER . ";dbname=" . DB_DEFAULT;
 $db = new PDO($dsn, DB_USER, DB_PASS);
 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 $q = $db->query($query);
 if (!$q) {
 echo $db->errorInfo();
  } else {
        $rows = $q->fetchAll(PDO::FETCH_ASSOC);
    }
} catch (PDOException $e) {
    var_dump($e);
 }

这是一些不能由PDO执行的测试:

SET @ra_LMC:=80.9;
SELECT @ra_LMC;

我应该如何用pdo执行多行脚本?

感谢
阿曼。


问题答案:

PDO不允许在一个query()请求中执行多个语句。但是您的@ra_LMC变量应该在当前连接中可见,因此您可以将第二行(SELECT)放入新的query()调用中。

要读取整个脚本,您必须解析文件并通过调用query()运行每个语句。



 类似资料:
  • 问题内容: 我正在尝试使用PDO在PHP中运行查询。该查询在顶部具有一些变量来确定排名,除了在$ sql中使用SET @var时,它返回一个空行集。但是,如果删除有问题的SQL,它会返回正常值。 我不想在我的脚本中返回@ prev_value,@ rank_count或@rank_increasing,仅返回它在SELECT中创建的排名。 你能告诉我我做错了吗? 谢谢 问题答案: 在此处找到解决方

  • 问题内容: 嗨,我正在尝试执行脚本以使用Golang将数据填充到数据库中 问题是我遇到了错误: 我认为问题是执行人员认为是dbname的最后一个参数(sql脚本路径) 终端中的以下命令正在运行: 但我尝试在Go中复制以自动执行脚本。 该脚本具有删除表,创建表,插入和具有FK关系的PK,这是一个非常完整的脚本,因此我无法逐行执行,因此我决定执行de mysql程序以将数据插入数据库中。 有什么建议?

  • 我想在我的shell脚本中使用mysql语法和变量,我用错了什么? 我正在尝试将其作为./test.sh运行

  • 问题内容: 鉴于Java 9已经来临,我们终于可以拥有Java REPL了,我希望有一种方法可以在脚本中添加shebang并对其进行解释。 我尝试创建: 然而,这给出了: 事实证明,OpenJDK https://bugs.openjdk.java.net/browse/JDK-8167440中对此有增强要求。 还有其他方法吗? 问题答案: 用 作为的第一行。该脚本可能如下所示: 当然,命令行选项

  • 由于我不知道的原因,这在我的最新函数中不起作用: 语法错误表明它在之后按字面意思解释,而不是展开它。我如何让它在这里使用变量值而不是文字值?我知道在中可能是一个不同的上下文,但肯定有一种方法可以在所有地方编写这个模式名的脚本?

  • 问题内容: 我的package.json文件中有一个npm任务,如下所示执行笑话测试: 我想使用grunt 执行此任务。我为此安装了grunt-run并添加了run任务,但是如何在其中调用此npm任务呢? 问题答案: 配置与文档中显示的示例类似的示例。 将的值设置为。 设置和在数组中。 Gruntfile.js 跑步 使用上面显示的配置通过CLI 运行将调用该命令。 注意:向Array 添加(或等