在for循环

时间:2015-07-13 18:57:17

标签: php mysql sql for-loop mysqli

这是我的表

id | total  | adult | kid | babies

这是我要插入的数据

total = 3, adult = 2, kid = 1, babies = 0

应该像

一样插入
id | total  | adult | kid | babies
 1 |     3  |     1 |   0 |      0 
 2 |     3  |     1 |   0 |      0
 3 |     3  |     0 |   1 |      0

如何插入我的数据,如上面的结构?

我试过

for ($i=0; $i <$total ; $i++) 
{ 
$query = "INSERT INTO trip(total, adult, kid, babies) 
VALUES (
    '".$total."',
    '".$adult."',
    '".$kid."',
    '".$babies."'
    )";
$mysqli->query($query);
}

始终插入相同的数据。但是,我如何插入像上面给出的数据?

1 个答案:

答案 0 :(得分:0)

你需要有三个不同的循环,一个用于成人,一个用于儿童,一个用于婴儿:

//Prepare the insert statement.
$mysqli->prepare = "INSERT INTO trip(total, adult, kid, babies) VALUES (?, ?, ?, ?)";

//Bind some variables.
$mysqli->bind_param('iiii', $total, $flagAdult, $flagKid, $flagBaby);

//Insert the adults.
$flagAdult = 1;
$flagKid = 0;
$flagBaby = 0;
for ($i=0; $i<$adult; $i++) 
{ 
    $mysqli->execute();
}

//Insert the kids.
$flagAdult = 0;
$flagKid = 1;
$flagBaby = 0;
for ($i=0; $i<$kid; $i++) 
{ 
    $mysqli->execute();
}

//Insert the babies.
$flagAdult = 0;
$flagKid = 0;
$flagBaby = 1;
for ($i=0; $i<$babies; $i++) 
{ 
    $mysqli->execute();
}

您的代码容易受SQL injection attacks攻击,因此我将其更改为使用bind_param,请参阅文档herehere

我认为数据是整数(因为只有0和1),但如果你因某种原因想要使用字符串,你需要将'iiii'(意思是四个整数)更改为{{ 1}}(意思是四个字符串)。