Você provavelmente não precisa do
DELIMTER
comando. Isso pertence a programas cliente centrados no MySQL. Por favor, tente com ponto-e-vírgula simples:
if (!$mysqli->query("DROP PROCEDURE IF EXISTS p") ||
!$mysqli->query("CREATE PROCEDURE p(IN id_val INT) BEGIN INSERT INTO test(id) VALUES(id_val); END;")) {
echo "Stored procedure creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
e deixe o PHP se preocupar em delimitar
AVISO
Eu peguei o código acima de http://php.net/manual /en/mysqli.quickstart.stored-procedures.php