【问题标题】:save data in mysql by stored procedure通过存储过程将数据保存在mysql中
【发布时间】:2015-09-20 20:34:05
【问题描述】:

我有一个必须每月更新的表,由于我在服务器上上传文本文件并将其保存在临时表中,下面的代码显示它:

$result_emp = "LOAD DATA LOCAL INFILE'".$myFile_emp."' INTO TABLE infemptemp COLUMNS TERMINATED BY ','";

然后在成功更新并在“infemptem”表中插入新数据后,我应该将具有旧数据的主表“infemp”的数据与具有新数据的“infemptemp”进行比较,为此,我编写以下代码:

$viwe_emp =mysqli_query($conn,"select * from infempsame where 1");
              $NumRows_emp=mysqli_num_rows($viwe_emp);
              //echo $NumRows_vam;
              $i=0;

              while(($row=$viwe_emp->fetch_assoc())!=NULL)
                {
                $prsid1=$row['PrsID'];
                $AccID1=$row['AccID'];
                $numid1=$row['NumID'];
                $sql2="select * from infempsame  where prsID='".$prsid1."';";
                if (mysqli_query($conn,$sql2))
                    {
                    $sql2_update="UPDATE `infemp` SET AccID='".$AccID1."',NumID='".$numid1."' WHERE prsID='".$prsid1."';";
                     if(mysqli_query($conn,$sql2_update))
                     {
                     $i+=1;
                     }
                    }// end   if (mysqli_query($conn,$sql2))

          }// end while insert new fields of infvam

注意代码并在我的数据库的“infempsame”表中有 3500 条记录,当我想更新“infemp”表时,浏览器会超时。 我想如果按程序编写上面的代码,我的问题就解决了。 这是真的吗?我如何编写程序并调用或使用它? 最好的问候。

【问题讨论】:

    标签: php mysql stored-procedures timeout


    【解决方案1】:

    存储过程将是多余的。有一个更好的方法隐藏起来,但它只是在manual中得到一个非常简短的提及

    您还可以执行覆盖多个表的 UPDATE 操作。 但是,您不能将 ORDER BY 或 LIMIT 与多表一起使用 更新。 table_references 子句列出了 加入。它的语法在第 13.2.9.2 节,“JOIN 语法”中描述。这里 是一个例子:

    UPDATE items,month SET items.price=month.price WHERE
    items.id=month.id;
    

    因此,您可以编写一个简单的查询来摆脱这样的 PHP 脚本。

    UPDATE infemp, infemptemp 
        SET infemp.AccID=infemptemp.AccID,
        infemp.NumID=infemptemp.numID 
    WHERE infemp.prsID=infemptemp.prsID;
    

    如果您在 prsID 列上有索引,这应该很快完成。

    【讨论】:

    • 嗨,亲爱的,非常感谢,它解决了我的问题,你的回答改变了我对 sql 子句的看法并在编程中使用它们。
    猜你喜欢
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 2012-06-15
    • 2018-05-10
    相关资源
    最近更新 更多