Execute mysql "create function" statement with PHP
Asked Answered
C

1

8

I want to run the following mysql create function statement from PHP:

DELIMITER $$
CREATE FUNCTION `myFunc`(`instring` varchar(4000)) RETURNS int(11)
    NO SQL
    DETERMINISTIC
    SQL SECURITY INVOKER
BEGIN
    DECLARE position int;
    ....here comes function logic
    RETURN position;
END$$
DELIMITER ;

But I get this mysql error:

check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER'

What can I do? Can I execute create statement without DELIMITER keyword?

Cloud answered 28/1, 2013 at 19:21 Comment(5)
Don't use the mysql_ functions. They're deprecated for a while now. The two libraries that are still maintained are mysqli and PDO.Ducktail
MySQL is not deprecated. It is the mysql_* family of functions that are. Use mysqli_* or PDO.Overtake
Sorry that's what I meant. EditedDucktail
Bingo (credit to google): #5311641Tronna
I am using mysqli, but that's just an adapter. Sql client is still mysql.Cloud
C
13

You most likely do not need the DELIMTER command. That belongs to MySQL-centric client programs.

Please try with plain old semicolons:

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;
}

and let PHP worry about delimiting

CAVEAT

I got the above code from http://php.net/manual/en/mysqli.quickstart.stored-procedures.php

Chapnick answered 28/1, 2013 at 19:26 Comment(1)
... "and let PHP worry about delimiting" <-- saved my day :DMonahan

© 2022 - 2024 — McMap. All rights reserved.