在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 KEY 和 auto_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中循环插入查询[重复]的主要内容,如果未能解决你的问题,请参考以下文章