Probablemente no necesita cambiar el delimitador.
El delimitador es necesario en la CLI para saber dónde termina la instrucción SQL, porque la CLI seguirá leyendo y ejecutando más instrucciones hasta que le indique que se detenga (por ejemplo, con exit
). o Control-D). Pero lo que realmente lee es solo un flujo de caracteres; de alguna manera necesita averiguar dónde termina una declaración y comienza la siguiente. Eso es lo que hace el delimitador.
En PHP, cada llamada de función ejecuta una declaración. No puede haber varias declaraciones en una llamada de función, por lo que no hay necesidad de delimitarlas. La instrucción es la cadena completa. Esto es cierto para el antiguo mysql_query
así como el nuevo mysqli_query
y DOP. Por supuesto, hay mysqli_multi_query
si realmente desea pasar múltiples consultas a una función.
En el caso de un procedimiento almacenado/disparador/función/etc., puede haber varias declaraciones, pero eso lo maneja MySQL mismo (y siempre es ;
, HASTA DONDE SE). Entonces, en lo que respecta a PHP, eso sigue siendo una afirmación.
La configuración del delimitador que está viendo en phpMyAdmin probablemente se esté utilizando para dividir declaraciones, y probablemente se esté haciendo en código PHP. Tiene que hacer esto porque acepta la entrada del usuario que consta de varias declaraciones, pero debe pasar solo una declaración por llamada de función. (No he revisado el código phpMyAdmin para estar completamente seguro de esto).