这是我的表
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);
}
始终插入相同的数据。但是,我如何插入像上面给出的数据?
答案 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
,请参阅文档here和here。
我认为数据是整数(因为只有0和1),但如果你因某种原因想要使用字符串,你需要将'iiii'
(意思是四个整数)更改为{{ 1}}(意思是四个字符串)。