douxi0098 2015-09-01 08:30
浏览 5
已采纳

每次刷新时如何重新声明/重新定义MySQL用户功能?

Is it possible to redeclare a MySQL function every time you refresh, this is my code

mysql_query("
DROP FUNCTION IF EXISTS Add_num;
CREATE FUNCTION Add_num(LAT_A INT)
RETURNS INT
READS SQL DATA
DETERMINISTIC
BEGIN
DECLARE Ans BIGINT;
SET Ans = LAT_A + 2;
RETURN Ans;
END");

even though I have the line DROP FUNCTION IF EXISTS Add2; the function stays the same when refreshing. For example I changed the 2 to 3 in the line SET Ans = LAT_A + 2; and then refreshed and it still adds 2 not 3.

  • 写回答

1条回答 默认 最新

  • douling1936 2015-09-01 09:15
    关注

    I have written solution for you, but here I have used mysqli as you would be aware about mysql_query() doesn't accept semicolon(;) and can execute only one query at a time.

    Code is as below :

    $mysqli = new mysqli("localhost", "root", "", "test");
    
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s
    ", mysqli_connect_error());
        exit();
    }
    
    if (!$mysqli->query("DROP FUNCTION IF EXISTS Add_num") ||
        !$mysqli->query("CREATE FUNCTION Add_num(LAT_A INT) RETURNS INT  READS SQL DATA  DETERMINISTIC  BEGIN  DECLARE Ans BIGINT;  SET Ans = LAT_A + 4;  RETURN Ans;  END;")) {
        echo "Function creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
    }
    $select_qry = " SELECT Add_num(6) as result";
    $result = $mysqli->query($select_qry);
    
    if ($result) {
        $row = $result->fetch_assoc();
        echo "Result is :{$row['result']}";
    }
    
    $mysqli->close();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)