【问题标题】:I'm having trouble with php while loop inserting data in to mysql database我在循环将数据插入mysql数据库时遇到了php问题
【发布时间】:2013-07-19 18:13:10
【问题描述】:

所有的php代码都在下面。

在插入到影院数据库表部分之前,该脚本工作正常。我已经回应了 每个变量的内容都通过循环运行,以确保它们具有所有 他们里面的正确数据。但是由于某种原因,一些数据没有被插入到数据库中,即使它包含在插入语句之前的变量中。总共有 18 个循环,但只有 12 行数据被插入到数据库中。我认为一个插入语句的数据可能太多,因此尝试将其限制为十个,然后我计划使用 from id desc 查询选择其余的,但在前 10 个中只有 7 个插入告诉我它必须是插入语句,不是数据库表。我已经寻找了一个原因并尝试了很多不同的东西,但仍然没有快乐。这实际上是我最后的手段,因为我是一个非常喜欢 DIY 的人,不喜欢寻求帮助。提前感谢我得到的任何帮助!

<?php

require('../php/connect.php');

$table = "CREATE TABLE IF NOT EXISTS cinema (
    id int(20) NOT NULL AUTO_INCREMENT,
    tags VARCHAR(200) NOT NULL,
    title VARCHAR(200) NOT NULL,
    description VARCHAR(300) NOT NULL,
    image VARCHAR(100) NOT NULL,
    link VARCHAR (200) NOT NULL,
    PRIMARY KEY(id))";

$result = mysqli_query ($dbc, $table);


$select = "SELECT * FROM search";

$r = mysqli_query ($dbc, $select);

while ( $row = mysqli_fetch_array( $r , MYSQLI_ASSOC ))
{
    $tags = $row['tags'];
    $title = $row['title'];
    $description = $row['description'];
    $image = $row['image'];
    $link = $row['link'];

    echo $tags;
    echo $title;
    echo $description;
    echo $image;
    echo "$link <br />";
    echo "one <br /><br />";

    $insert = "INSERT INTO cinema (tags, title, description, image, link)
                VALUES ('$tags', '$title', '$description', '$image', '$link')";

    $run = mysqli_query ($dbc, $insert);                        
}


if($result) {
    echo 'success';
}

else {
    echo 'failed';
}   

【问题讨论】:

  • 任何错误信息可用?
  • 这些变量中是否有可能包含'?尝试准备好的语句,它们非常适合这个用例。
  • revoua 感谢您的回复。不,它不是说有任何错误。只是没有插入所有数据。
  • 约翰感谢您的回复。我对准备好的陈述不太熟悉。并且有可能某些变量可能包含一个'会导致问题吗?

标签: php database mysqli while-loop


【解决方案1】:

在您的插入语句中使用 LOW PRIORITY 关键字以避免在数据很大时出现冗余。

INSERT LOW PRIORITY INTO cinema('a','b','c') VALUES('x','y','c')

【讨论】:

    【解决方案2】:

    关于您的代码未插入所有数据,您插入的数据可能包含重复的ID,这是一个主键,因此特定的插入语句失败。

    假设:- 您正在执行循环 10 次(10 行),那么 10 行中的 3 行可能包含重复的 id(主键),因此 3 个插入语句没有被执行。

    【讨论】:

    • 他正在使用mysqli_函数。
    • 哦...我没看到:P
    • 另外,由于cinema表有一个自动递增的主键并且OP没有在插入查询中插入主键值,所以重复的逻辑不会启动。当您显式尝试插入一个已经存在的主键值时,会出现 PK 重复错误。
    • @Maximus2012 我认为他编辑了这个问题。最初他试图插入 ID。
    • 感谢您的回复。 ID 在电影院桌子上是自动递增的。数据是从另一个名为 search 的数据库表中选择的,该表有 18 个条目,其 id 也是自动递增的。
    【解决方案3】:

    试试这个:

    $r = mysqli_query ($dbc, $select);
    
    while ( $row = mysqli_fetch_array( $r , MYSQLI_ASSOC ))
    {  
        $tags = $row['tags'];
        $title = $row['title'];
        $description = $row['description'];
        $image = $row['image'];
        $link = $row['link'];
    
        echo $tags;
        echo $title;
        echo $description;
        echo $image;
        echo "$link <br />";
        echo "one <br /><br />";
    
        $insert = "INSERT INTO cinema (tags, title, description, image, link)
                VALUES ('$tags', '$title', '$description',               
       '$image', '$link')";
    
        $run = mysqli_query ($dbc, $insert);                        
    
        if($run) {
            echo 'success';
        }
        else {
           echo 'failed';
        }       
    }
    

    【讨论】:

      猜你喜欢
      • 2014-08-04
      • 2012-09-09
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 2020-09-15
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      相关资源
      最近更新 更多