执行mysql“create function”声明与PHP [英] Execute mysql "create function" statement with PHP

查看:128
本文介绍了执行mysql“create function”声明与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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆