【问题标题】:UPDATE MYSQL TABLE WITH FOR LOOP IN PHP在 PHP 中使用 FOR 循环更新 MYSQL 表
【发布时间】:2017-05-26 08:18:13
【问题描述】:

我正在尝试从 php 中的数组更新 2 列,ratedimdb_rating,以获取 mysql 表中的所有值。 $data 是一个二维数组。该数组是从 javascript 发布的。没有显示错误,一切似乎都很好,除了我的桌子上什么都没有发生;没有记录正在更新。 echo json_encode(0) 确实返回 0 但没有更新记录。我最担心的是die(mysqli_error($con)); 没有返回任何错误。我哪里做错了?

if($con){
        $data=$_POST['dat'];
        $count=sizeof($data);

        for($i=0;$i<$count;$i++){
        $sql="UPDATE `movies2` SET `rated`='$data[$i][2]' WHERE `movie_ID`='$data[$i][0]'";
        $sql2="UPDATE `movies2` SET `imdb_rating`='$data[$i][1]' WHERE `movie_ID`='$data[$i][0]'";
        $result=mysqli_query($con,$sql);
        $result2=mysqli_query($con,$sql2);
    }

        if($result && $result2){
            echo json_encode(0);
        }
        else{
            echo json_encode(1);
            die(mysqli_error($con));
        }
    }

【问题讨论】:

  • 不要在查询中包含原始 $_POST 数据。阅读有关 SQL 注入的信息。您是否尝试回应您的查询?你会看到他们有什么问题。
  • 如果您echo $sql$sql2,这些值是否按照您的预期正确填写?如果您在 phpMyAdmin 中复制/粘贴该查询,它会正确更新数据库吗?
  • 是的,sql 语句在 phpMyAdmin 中工作得很好
  • 语法错误,不能写 "$data[$i][2]" 因为 "[2]" 被视为字符串,而不是数组索引。您需要编写 "{$data[$i][2]}" 但无论如何都不要构建这样的查询。请改用 PDO。
  • “sql 语句工作” - 你是 ECHO 那些查询还是只是手动在 phpMyAdmin 中编写?这有很大的不同。

标签: php mysql arrays


【解决方案1】:

我认为这可能对你有用。

如果您的$_POST['dat'] 如下所示。

      <?php
            $_POST['dat']= array(array('1234','imdb_rating1','rated1'),array('2345','imdb_rating2','rated2'));

            $servername = "localhost";
            $username = "root";
            $password = "";
            $database = 'test';

        $con = mysqli_connect($servername, $username, $password, $database);
        if($con){
        $data=$_POST['dat'];
        $count=sizeof($data);

        for($i=0;$i<$count;$i++){
          $data0 =  $data[$i][0];
          $data1 =  $data[$i][1];
          $data2 =  $data[$i][2];
        $sql="UPDATE `movies2` SET `imdb_rating`='".$data1."', `rated`='".$data2."' WHERE `movie_ID`='".$data0."'";
        $result=mysqli_query($con,$sql);
    }

        if($result){
            echo json_encode(0);
        }
        else{
            echo json_encode(1);
            die(mysqli_error($con));
        }
    }
                ?>

【讨论】:

    【解决方案2】:

    显然错误出现在$data[$i][2] 中。改用 {$data[$i][2]} 效果很好。谢谢。

    【讨论】:

      【解决方案3】:

      标准 PHP 安装中没有特殊库,字符串连接是使用点运算符实现的:像这样更改您的代码。

      $sql="UPDATE `movies2` SET `rated`='".$data[$i][2]."' WHERE `movie_ID`='".$data[$i][0]."'";
      

      $sql2="UPDATE movies2 SET imdb_rating='".$data[$i][1]."' WHERE movie_ID='".$data[$i][0]." '";

      【讨论】:

        猜你喜欢
        • 2016-01-04
        • 1970-01-01
        • 2012-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多