【问题标题】:Why does my data from SQL table delete after I run this code?为什么运行此代码后我的 SQL 表中的数据会被删除?
【发布时间】:2019-07-30 14:02:30
【问题描述】:

我有这段代码要运行,它连接到我的数据库并用于显示表上的值,但每次我执行 UPDATE 查询时。

它用零更新该行的其余部分,除了我选择的那个。我想保留我的数字,但只更新我选择的数字,但我不知道怎么做!

我用零 (0) 行初始化表,然后用我的网页应用程序更改这些值。

但是如果我在其余列上有另一个值并且我想更改这个值,则其余值将归零(表的初始状态)(我不知道如何更好地解释它我认为)

<?php 
                      $showData = ("SELECT * FROM horario");
                      if ($new_user_activity['data'] == 'Seg' ) {
                          $segHora = $new_user_activity['horas'];
                      }
                          $sql = ("UPDATE horario SET seg=$segHora WHERE id=1");
                          if(!mysqli_query($conn,$sql)) {
                            echo("ERRO NA QUERY" );
                          }
                          else {
                            if(mysqli_query($conn,$sql)){
                              $sqlData = mysqli_query($conn,$showData);
                              while ($row = mysqli_fetch_array($sqlData,MYSQLI_ASSOC)){
                              echo($row['seg']);
                              }     

                        }

                        }

            ?>

它希望将我的值与同一行的其他列保持一致!

【问题讨论】:

  • 请提供数据示例和预期结果。
  • 并且不要将它们作为图片提供!
  • @AntonioVenerosoContreras 我在文字中添加了一张图片!你能看到吗?
  • 好的,我将尝试解释我需要的示例和预期的结果:会发生什么(如图所示)我有一个包含一些条目的表。只有 Ter 的值为 8。其余的值为 0。在我的 webApplication 上,我将 Seg 的值更改为 123,当我提交它时,它会自动将 Ter 的值更改为 0,而无需我要求!清楚了吗?
  • 在您执行查询之前,尝试使用 echo $sql,查看您发送的确切查询?

标签: javascript php html sql mariadb


【解决方案1】:

您显示的这段代码负责重置该行。一定有别的东西在做。某处还有另一个更新,可能是数据库上的触发器,但它不是来自您发布的代码示例。

关于您的代码,有几处错误,其他人已经指出。我想再补充几个

  1. 确保在将数据插入 MySQL 之前对其进行清理。对于初学者,请查看 PDO 和 bindparam。除此之外,使用 (int) 将变量转换为整数。
  2. 只有在有新的用户活动时才会更新。

代码:

 if ($new_user_activity['data'] == 'Seg') {
     $segHora = (int)$new_user_activity['horas'];
     $sql = ("UPDATE horario SET seg=$segHora WHERE id=1");

     if (!mysqli_query($conn, $sql)) {
         echo ("ERRO NA QUERY");
         return; // or exit, if this is not a function
     }
 }

 $showData = ("SELECT * FROM horario");
 $sqlData = mysqli_query($conn, $showData);

 while ($row = mysqli_fetch_array($sqlData, MYSQLI_ASSOC)) {
     echo ($row['seg']);
 }

【讨论】:

  • 这确实有帮助,问题得到了解决!太感谢了。我对 SQL 还是很陌生,所以我尽我所能!感谢您的帮助!
  • 太棒了!乐意效劳。即使您是行业高手,也会不断犯错。
【解决方案2】:

似乎该表在每次查询时都会重置每一列中的所有值。这可能意味着每次运行代码时,您设置的数据库连接首先会用零更新每一列,然后插入新数据。我会检查你的连接脚本。

【讨论】:

  • $servername = " ....我的 IP..."; $username = "...我的用户名"; $password = "...我的密码"; $dbname = "....我的数据库名,..."; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检查连接 if ($conn -> connect_error){ die("DATABASE CONNECTION FAILED: " . $conn -> connect_error); } echo "
    连接到数据库
    "; mysqli_set_charset($conn,"UTF8");
  • 我只是在页面顶部创建它!
  • 请提供用零初始化数据库的代码。为什么要初始化?
  • 创建数据库时只是一个简单的插入,类似于 INSERT INTO horario(...) Values(..0,0,0,0,0,0,0)
  • 我这样做是因为我只是不想让它以 null 开头!因为最后我必须对列的值求和才能得出总数
猜你喜欢
  • 2022-01-22
  • 1970-01-01
  • 2020-12-24
  • 2017-09-14
  • 1970-01-01
  • 1970-01-01
  • 2012-12-23
  • 2014-04-08
  • 2016-09-26
相关资源
最近更新 更多