如何执行mysql命令DELIMITER

use*_*332 10 php mysql

我有很大的问题(对我而言)

我需要DELIMITER |从PHP 执行MySQL命令,但mysql_query()失败并出错.我发现mysql_query()不支持使用DELIMITER,因为这个命令只适用于MySQL控制台

但是当我打开phpMyAdmin时,有一个选项可以在SQL选项卡上更改DELIMITER并且它可以工作,但我不知道如何.

是否可以从PHP更改分隔符?在调用CREATE TRIGGER使用多个命令的命令之前我需要它;.

der*_*ert 13

你可能并不需要更改分隔符.

CLI中需要使用分隔符来告知SQL语句的结束位置,因为CLI将继续读取并执行更多语句,直到您告诉它停止(例如,使用exit或Control-D).但它实际上读的只是一串人物; 它以某种方式需要弄清楚一个语句的结束和下一个语句的开始.这就是分隔符的作用.

在PHP中,每个函数调用都执行一个语句.一个函数调用中不能有多个语句,因此不需要一种方法来分隔它们.该语句是整个字符串.旧的mysql_query以及新的mysqli_query和PDO都是如此.当然,mysqli_multi_query如果你真的想要将多个查询传递给一个函数.

在存储过程/触发器/函数/等的情况下,可以有多个语句,但这些语句由MySQL本身处理(并且始终是;AFAIK).因此,就PHP而言,这仍然是一个声明.

您在phpMyAdmin中看到的分隔符设置可能用于拆分语句,可能是在PHP代码中完成的.它必须这样做,因为它接受由多个语句组成的用户输入,但每个函数调用只能传递一个语句.(我没有检查phpMyAdmin代码,以完全确定这一点).