我有很大的问题(对我来说)
我需要从 PHP 执行 MySQL 命令 DELIMITER |
,但 mysql_query()
失败并出现错误。我发现mysql_query()
不支持DELIMITER
的使用,因为这个命令只在MySQL控制台有效
但是当我打开 phpMyAdmin 时,有一个选项可以更改 SQL 选项卡上的 DELIMITER 并且它可以工作,但我不知道如何。
是否可以从 PHP 更改分隔符?在调用使用多个 ;
的 CREATE TRIGGER
命令之前,我需要这样做。
最佳答案
您可能不需要需要更改分隔符。
CLI 中需要分隔符来指示 SQL 语句的结束位置,因为 CLI 将继续读取和执行更多语句,直到您告诉它停止(例如,使用 exit
或 Control -D)。但它实际读取的只是一个字符流;它需要以某种方式确定一个语句在哪里结束,下一个语句在哪里开始。这就是分隔符的作用。
在 PHP 中,每个函数调用都执行一条语句。一个函数调用中不能有多个语句,因此不需要一种方法来分隔它们。该语句是整个字符串。旧的 mysql_query
以及较新的 mysqli_query
和 PDO 都是如此。当然,如果你真的想将多个查询传递给一个函数,还有 mysqli_multi_query
。
在存储过程/触发器/函数/等的情况下,可以有多个语句,但由 MySQL 本身处理(并且始终是 ;
,AFAIK)。所以就 PHP 而言,这仍然是一种说法。
您在 phpMyAdmin 中看到的分隔符设置可能用于将语句分开,并且可能是在 PHP 代码中完成的。它必须这样做,因为它接受由多个语句组成的用户输入,但每次函数调用必须只传递一个语句。 (我还没有检查 phpMyAdmin 代码来完全确定这一点)。
关于php - 如何执行mysql命令DELIMITER,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5311141/