我在使用php时遇到麻烦而循环将数据插入到mysql数据库中

时间:2013-07-20 14:44:58

标签: php database mysqli while-loop

所有的PHP代码如下。

该脚本可以正常工作,直到插入影院数据库表部分。我已经回应了 每个变量的内容都通过循环运行,以确保它们具有全部 他们内部的正确数据。但由于某些原因,某些数据未插入到数据库中,即使它包含在insert语句之前的变量中。共有18个循环,但只有12行数据被插入到数据库中。我想也许它的一个插入语句的数据太多,所以尝试将其限制为十,然后我计划使用from id desc查询选择其余的,但是前10个只插入7个告诉我它必须是insert语句,不是数据库表。我找了一个理由,尝试了很多不同的东西,但仍然没有快乐。这对我来说实际上是最后的手段,因为我非常喜欢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';
}   

3 个答案:

答案 0 :(得分:1)

在insert语句中使用LOW PRIORITY关键字可以避免数据较大时的冗余。

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

试试这个:

$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';
    }       
}