Php Mysql同一行复制同一表120次
简单mysql表:Php Mysql同一行复制同一表120次,php,mysql,Php,Mysql,简单mysql表: CREATE TABLE `users` ( `id` INT NOT NULL AUTO_INCREMENT , `name` TEXT NOT NULL , `surname` text NOT NULL , `city` text NOT NULL , PRIMARY KEY ( `id` ) ) ENGINE = MYISAM 并插入如下内容: INSERT INTO `users` (`id`, `name`, `surname`, `city`) V
CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name` TEXT NOT NULL ,
`surname` text NOT NULL ,
`city` text NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM
并插入如下内容:
INSERT INTO `users` (`id`, `name`, `surname`, `city`) VALUES (1,`rock`,`fixed`,`london`);
如何使用不同的主id将同一行的表详细信息输入100次?由于id具有“自动增量”属性,因此每次输入数据时都应生成一个唯一的id
因此,插入字符串可以如下所示:
INSERT INTO `users` (`name`, `surname`, `city`) VALUES (`rock`, `fixed`, `london`);
id字段将每次自动递增,为您提供唯一的id。使用php,您可以这样做:
for($i=0; $i< 119; $i++)
{
//execute your query here, do not include your id column
INSERT INTO `users` (`name`, `surname`, `city`)
VALUES (`rock`,`fixed`,`london`);
}
根据评论进行编辑:
您的代码无法工作,因为您正在循环外执行查询,您的代码应该如下所示:
<?php
*/here mysql connection
for($x=0; $x<100; $x++)
{
$sql =INSERT INTO users (name, surname, city)
VALUES (rock,fixed,london);
$status = $conn->query($sql);
}
if ($status)
{ echo "New record created successfully"; }
else { echo "Error: " . $sql . "<br>" . $conn->error; }
$conn->close();
?>
只需使用以下查询:
INSERT INTO users ( name, surname, city) VALUES ('rock','fixed','london');
请尝试以下代码
for ($i=0; $i<= 119; $i++){
//exclude id and do auto increament and primary key
$qry = "INSERT INTO `users` (`name`, `surname`, `city`) VALUES (`rock`,`fixed`,`london`)";
}
将其作为没有循环的单个SQL语句执行:-
INSERT INTO `users` (`id`, `name`, `surname`, `city`) VALUES (1,`rock`,`fixed`,`london`);
SELECT NULL, `rock`, `fixed`, `london`
FROM
(
SELECT 0 AS aCnt UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) units
CROSS JOIN
(
SELECT 0 AS aCnt UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11
) tens
这两个子查询只返回数字的范围。交叉连接时,一个10行,另一个12行,总共返回120行。这120行只是您的固定值,但id为NULL,自动递增将其排序为唯一值
请注意,您可以这样做更大的范围。例如,如果您想插入653行,只需相当随机的数字选择:-
SELECT NULL, `rock`, `fixed`, `london`
FROM
(
SELECT 0 AS aCnt UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) units
CROSS JOIN
(
SELECT 0 AS aCnt UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) tens
CROSS JOIN
(
SELECT 0 AS aCnt UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) hundreds
WHERE (units.aCnt + 10 * tens.aCnt + 100 * hundreds.aCnt) < 653
或将id字段指定为计算值:-
SELECT 1 + units.aCnt + 10 * tens.aCnt + 100 * hundreds.aCnt, `rock`, `fixed`, `london`
FROM
(
SELECT 0 AS aCnt UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) units
CROSS JOIN
(
SELECT 0 AS aCnt UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) tens
CROSS JOIN
(
SELECT 0 AS aCnt UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) hundreds
WHERE (units.aCnt + 10 * tens.aCnt + 100 * hundreds.aCnt) < 653
在insert查询中删除id列和相应的值。在用户名、姓氏、城市值中插入“rock”、“fixed”、“london”;好的,现在我如何复制同一行100次,我需要复制数据100次吗?或者一些小技巧?循环它。对于$x=0$x@Purohit您想添加记录120次还是100次?这个答案和你的答案是一样的@luthandolook,现在我如何复制同一行100次,我需要复制100次数据吗?还是一些小技巧?@LuthandoLoot的答案告诉你如何在PHP中执行for循环,使用它在PHP中插入100行,而不是按照我的要求输入100次或120次,每次执行时只需输入1次行。我使用了代码:–我使用php类型的任何方式,但在mysql中,它显示:1136-列计数与php中第1行的值计数不匹配。使用它时,没有按照我的要求输入100次或120次,每次执行时只需输入1个时间行。我使用了代码:–@Purohit这是因为您在循环外执行查询,请将if语句移到循环内loop@Purohit检查我编辑的答案,一切正常,@感谢您的解释。这可能比从php中分别插入120个插件要快得多。
SELECT NULL, `rock`, `fixed`, `london`
FROM
(
SELECT 0 AS aCnt UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) units
CROSS JOIN
(
SELECT 0 AS aCnt UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) tens
CROSS JOIN
(
SELECT 0 AS aCnt UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) hundreds
WHERE (units.aCnt + 10 * tens.aCnt + 100 * hundreds.aCnt) < 653
SELECT 1 + units.aCnt + 10 * tens.aCnt + 100 * hundreds.aCnt, `rock`, `fixed`, `london`
FROM
(
SELECT 0 AS aCnt UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) units
CROSS JOIN
(
SELECT 0 AS aCnt UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) tens
CROSS JOIN
(
SELECT 0 AS aCnt UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) hundreds
WHERE (units.aCnt + 10 * tens.aCnt + 100 * hundreds.aCnt) < 653