【问题标题】:Getting old data from mysql database when appending to div附加到 div 时从 mysql 数据库中获取旧数据
【发布时间】:2016-03-14 08:57:36
【问题描述】:

我有一个主页,上面有一个打开弹出窗口的按钮。关闭此弹出窗口时,我有一个脚本,该脚本调用 php 文件以从数据库中选择数据。此选定数据将附加到主页中的 div 中:

 if (win.closed !== false) { 
    window.clearInterval(pollTimer);
    $.get("<?php echo $GLOBALFILESPHPFORJS ?>DBtoOCI.php", { ReferenceKey: Reference  } )
    .done(function( data ) { 
      console.log( data );
      $("#ItemData").append(data);
     });

第一次很好地选择并附加数据。例如,如果我有一个名为animalname 的列,其中有 1 行包含数据“Cat”,那么在我的 div 中我会看到 cat。如果我然后删除我的数据库的行 uit 并添加一行名为“Tiger”的行,然后再次打开和关闭弹出窗口,然后将新数据添加到 div 使其变为:“Cat Tiger”,但它是变身“猫猫”!为什么会这样?

从数据库中选择数据:

$sqlReturnExistingOCI = "SELECT * FROM animal WHERE animalname= ?";


      if($stmt = $conn->prepare($sqlReturnExistingOCI)) 
        {    
            mysqli_stmt_bind_param($stmt, "s", $referencekey);

            if(!$stmt->execute()) 
            { 
                echo $stmt->error;
            } 
            else 
            { 

              $result = mysqli_stmt_get_result($stmt);
              while ($row = mysqli_fetch_array($result)) {

                 echo $row['animalname'];
               }
              $stmt->free_result(); 
              $stmt->close; 
            }
        }

【问题讨论】:

    标签: javascript php jquery


    【解决方案1】:

    你必须先清理 div 然后为它附加数据$("#ItemData").html('');

    if (win.closed !== false) { 
    window.clearInterval(pollTimer);
    $.get("<?php echo $GLOBALFILESPHPFORJS ?>DBtoOCI.php", { uniqueReferenceKey: Reference  } )
    .done(function( data ) { 
      console.log( data );
      $("#ItemData").html('');
      $("#ItemData").append(data);
     });
    

    【讨论】:

    • 我想在 div 中有新数据而不是删除它
    • 正如我在您的 php 代码中看到的,您一次获得所有数据。如果您继续附加到 div,即使您没有从数据库中删除它,也会使其在数据中重复。解决此问题的最佳方法是在每次请求数据时清理 div。如果您正在寻找另一种实现方式,则不能使用echo $row['animalname']; ,您必须使用 json 并告诉 javascript 您要附加什么以及要从 div 中删除什么。如果你喜欢,我可以给你看
    • 在这个 dbtooci.php 中我有我 ehco 行,然后从 DB 中删除行,但是如果再次打开 dbtooci.php 它会选择并添加相同的数据,所以我猜有一个错误在 dbtoci.php 中
    【解决方案2】:

    我通过将我从弹出窗口中获得的每个新数据保存到另一个参考号来解决这个问题。

    因此,在我打开弹出窗口之前,我会生成一个唯一编号,将其添加到弹出窗口的 url,然后在将数据保存到数据库时,我使用此编号来保存数据。然后,如果我重新打开另一个弹出窗口,它就会有一个新的唯一参考号。在此之前,我创建了 1 个唯一编号并使用此编号将数据保存在数据库中,并使用此编号从数据库中删除相同的行。因此,如果我打开弹出窗口并关闭它,那么它会使用这个唯一编号保存数据并删除具有相同编号的数据,但是如果我重新打开弹出窗口并再次关闭,那么我会在数据库中再次看到旧数据,这我认为应该缓存。

    【讨论】:

      猜你喜欢
      • 2014-05-10
      • 1970-01-01
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      • 2017-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多