php:2个名为“表名已经存在”的存储过程

disho6za  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(217)

我在php文件中调用了如下存储过程:

// PROCEDURE SQL
            $sql2 = "SELECT * FROM tmp ORDER BY day ASC;";

            //CALL WITH SESSION VARS
            if(!$mysqli->query("CALL proc1('". $_SESSION['var1']." ', '". $_SESSION['var2'] ." 00:00:00','". $_SESSION['var3'] ." 00:00:00');"))
                die($mysqli->error);

            //EXEC SQL2
            $result = $mysqli->query($sql2)
                or die($mysqli->error);

            $i=0;

            while ($row = $result->fetch_array(MYSQLI_ASSOC)) {

                //do some calculs on fetched results and get value from $row['x']

                if($row['r2'] == NULL){
                // SECOND PROCEDURE SQL
                // note : table name and procedure name are different
                $sql3 = "SELECT r2 FROM temp ORDER BY day DESC LIMIT 1;";

            //CALL WITH SESSION VARS AND LARGER DATE
            if(!$mysqli->query("CALL proc2('". $_SESSION['var1']." ', '2017-01-01 00:00:00','". $_SESSION['var4'] ." 00:00:00');"))
                die($mysqli->error);

            //EXEC
            $result2 = $mysqli->query($sql3)
                or die($mysqli->error);

            while ($row2 = $result2->fetch_array(MYSQLI_ASSOC)) {
                $value_r2 = $row2['r2'];
            }

我这样做的原因是,如果第一次调用返回null,我希望更改在该调用中获取的数据的值
正如您所注意到的,我的两个过程是不同的,每个过程的表名也是不同的,所以当我加载这个代码时,如何在我的网页上显示“temp table already exists”?
编辑:
我的过程从数据库中获取结果并将数据插入临时表。临时表没有相同的名称。然后,当我调用该过程时,我对关联的临时表进行查询。

vql8enpb

vql8enpb1#

这听起来像是有什么东西坏了,或者可能是缓存问题。请尝试下列操作之一:

FLUSH TABLES [tablename];
REPAIR TABLE tablename;
DROP TABLE tablename;

记住备份数据。

相关问题