在PHP中循环插入查询[重复]

Posted

技术标签:

【中文标题】在PHP中循环插入查询[重复]【英文标题】:Loop over an insert Query in PHP [duplicate] 【发布时间】:2012-04-30 20:16:48 【问题描述】:

我无法通过 php 脚本在 SQL 中插入 N 次相同的值。 我有这个vslue?

Table Info  column (ID,Name, LastName,)
Valus ('',Alain,Alian);

我想要做的是在同一个表中插入这个值 10 次使用 E.G 的 While 循环 或类似的东西 有什么想法吗?

<?php
    $i=1;
    While ($i<= 5)      
    
       $sql="INSERT INTO arivage
          (ID_Ship,Date_ariv,Date_achat,prov_id,Sph,cyl,Prod_type,Pord_color)
          VALUES
          ('','$date','$date1','$prov_id','$sph','$cyl','$Prod_type','$Pord_color')";
       $i++;
    
?>

【问题讨论】:

【参考方案1】:

试试这个..这可能有效

$sql= "INSERT INTO TABLE_NAME(field1,field2) VALUES( ";
    for($i=0;$i<10;$i++)
    
       $sql.="('value1', 'value2'), "
    
    $sql.=" )";

【讨论】:

我认为它应该就像 values(),(),() 一样。 . .等 最后一次迭代将添加逗号,查询将以 ('value1', 'value2'), ) 结束。我认为这会产生错误。【参考方案2】:

你有什么错误吗?

你需要的是可行的

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) 
  die('Could not connect: ' . mysql_error());


for($i = 0; $i<10; $i++) 
    $sql="INSERT INTO arivage (ID_Ship,Date_ariv,Date_achat,prov_id,Sph,cyl,Prod_type,Pord_color) VALUES ('','$date','$date1','$prov_id','$sph','$cyl','$Prod_type','$Pord_color')";
    $result = mysql_query($sql);
    if (!$result) 
     die('Invalid query: ' . mysql_error());
    

【讨论】:

【参考方案3】:

你应该添加

mysql_query($sql);

到您的代码,以便在循环之间执行查询。

$i=1;
While ($i<= 5)      

 $sql="INSERT INTO arivage
 (ID_Ship,Date_ariv,Date_achat,prov_id,Sph,cyl,Prod_type,Pord_color)
 VALUES('','$date','$date1','$prov_id','$sph','$cyl','$Prod_type','$Pord_color')";

 mysql_query($sql);

    $i++;

【讨论】:

【参考方案4】:

我假设你已经连接到数据库(通过使用 mysql_connect() + mysql_select_db()),并且在组合之后执行你的查询(通过 mysql_query($sql))。

我需要知道 ID_Ship 列的数据类型是什么?这是 PRIMARY KEYauto_increment 吗?如果是,那么您需要从以下位置更改您的查询:

INSERT INTO arivage (ID_Ship,Date_ariv,Date_achat,prov_id,Sph,cyl,Prod_type,Pord_color) 
VALUES ('','$date','$date1','$prov_id','$sph','$cyl','$Prod_type','$Pord_color')

到:

INSERT INTO arivage (Date_ariv,Date_achat,prov_id,Sph,cyl,Prod_type,Pord_color) 
VALUES ('$date','$date1','$prov_id','$sph','$cyl','$Prod_type','$Pord_color');

注意:ID_ship 被移除,'' 也被移除。

此删除是为了防止为第二、第三等记录插入相同的主键。请记住,主键必须是唯一的。不指定它将让 MySQL 插入生成的值(因为它是 auto_increment)。

【讨论】:

【参考方案5】:

如果你需要在这里绑定参数是另一种方式。

public function insert($rows) 
    
        $setValues = null;
    
        foreach($rows as $column => $value) 
        
          $setValues .= "$column=:$column,";
        

        $setValues = rtrim($setValues, ',');

        $query = "INSERT INTO $this->_table SET $setValues";

        $stmt = $this->_conn->prepare($query);

        foreach($rows as $col => $val) 
        
            $stmt->bindParam(":$col", $val);
        
      
        $stmt->execute();
    

【讨论】:

为什么需要分块循环? 有时您需要一次添加多个值。另外,您还需要绑定您的参数。循环使用给定值准备和构建查询,并在执行查询之前绑定它们。

以上是关于在PHP中循环插入查询[重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP / MySQL:如何使用WHILE循环插入数据库[重复]

php mysql替代在循环中再次使用相同的查询[重复]

PHP MySQLi不执行插入查询[重复]

PHP:输出以前的 MySQL 查询 [重复]

事务与批处理查询以避免重复的 MySQL 插入

未使用 PHP 保存在 MYSQL 中的值 [重复]