【发布时间】:2018-10-27 20:37:51
【问题描述】:
我在我的 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)
你可以注意到我的两个过程不一样,每个过程的表名也不同,所以当我加载这段代码时,我的网页上怎么会有“临时表已经存在”?
编辑:
我的程序从我的数据库中获取结果并将数据插入到一个临时表中。 临时表的名称不同。 然后,当我调用该过程时,我会对关联的临时表进行查询。
【问题讨论】:
-
您想公开产生错误的代码吗? IE。程序,流程。可能您在过程中创建了一个固定名称的临时表,但是在一个会话中不能有两个具有相同名称的临时表。
-
哦完全忘了我会添加一些细节
-
“临时表已存在”是一个非常明确的消息,通常(如果不总是)在尝试创建 2 个具有相同名称的表时显示。你在你的程序中做什么?您是否在任何地方创建表格?
-
我不能给出程序的代码,它是数百行,但我仔细检查过,每个临时表的名称都不相同。 @BrentLobbezoo 在我的程序中,我创建了一个临时表并将数据插入其中
-
您可能在循环中调用您的过程。我真的不知道
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {何时关闭。如果您还没有,也许将您的 CREATE 语句更改为CREATE TABLE IF NOT EXISTS tablename
标签: php mysql sql stored-procedures mysqli