【问题标题】:Execute mysql "create function" statement with PHP用 PHP 执行 mysql “create function” 语句
【发布时间】:2013-01-28 19:21:45
【问题描述】:

我想从 PHP 运行以下mysql create function 语句:

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 ;

但是我得到了这个 mysql 错误:

查看与您的 MySQL 服务器版本相对应的手册 在“DELIMITER”附近使用正确的语法

我能做什么?我可以在没有 DELIMITER 关键字的情况下执行 create 语句吗?

【问题讨论】:

  • 不要使用 mysql_ 函数。它们现在被弃用了一段时间。仍在维护的两个库是 mysqli 和 PDO。
  • 不推荐使用 MySQL。它是 mysql_* 系列函数。使用mysqli_*PDO
  • 对不起,这就是我的意思。已编辑
  • 宾果游戏(归功于谷歌):stackoverflow.com/questions/5311141/…
  • 我正在使用mysqli,但这只是一个适配器。 sql客户端还是mysql。

标签: php mysql function create-function


【解决方案1】:

您很可能不需要DELIMTER 命令。那属于以 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 "Stored procedure creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

并让 PHP 担心定界

警告

上面的代码是从http://php.net/manual/en/mysqli.quickstart.stored-procedures.php得到的

【讨论】:

  • ...“让 PHP 担心定界”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-10
  • 1970-01-01
  • 2019-05-27
  • 2021-10-01
  • 1970-01-01
  • 2019-08-16
  • 1970-01-01
相关资源
最近更新 更多