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

如何使用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中对此有增强要求。 还有其他方法吗? 问题答案: 用 作为的第一行。该脚本可能如下所示: 当然,命令行选项

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

  • 问题内容: 我需要执行一个shell脚本。难得的是我想这样做 我不希望它等待命令完成,我希望它在后台进程中运行。我不想要另一个php线程,因为它将超时,该命令最多可能需要3个小时才能完成。 问题答案: 您需要重定向命令的输出。 如果使用此功能启动程序,则要使其在后台继续运行,必须将程序的输出重定向到文件或其他输出流。否则,PHP会挂起,直到程序执行结束。 http://php.net/manual