执行mysql“create function”声明与PHP [英] Execute mysql "create function" statement with PHP
问题描述
我想从PHP运行以下 mysql
create function语句:
DELIMITER $$
CREATE FUNCTION myFunc(`instring` varchar(4000))RETURNS int(11)
NO SQL
DETERMINISTIC
SQL安全性调用
BEGIN
DECLARE position int;
....这里是函数逻辑
RETURN位置;
END $$
DELIMITER;
但是我得到这个mysql错误:
检查与您的MySQL服务器版本相对应的手册,以查找在'DELIMITER'附近使用的
右语法
我能做什么?我可以执行没有DELIMITER关键字的create语句吗?
code>命令。这是属于以MySQL为中心的客户端程序。请用简单的旧分号尝试:
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存储过程创建失败:(。$ mysqli-> errno。)。 $ mysqli->误差;
}
让PHP担心分隔
CAVEAT
我从 http://php.net/manual/en/mysqli.quickstart.stored-procedures.php
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?
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
这篇关于执行mysql“create function”声明与PHP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!