首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >错误:如何使用循环将值插入到mysql中?

错误:如何使用循环将值插入到mysql中?
EN

Stack Overflow用户
提问于 2018-06-09 21:36:41
回答 2查看 66关注 0票数 1

我有这个代码允许用户输入孩子的年龄和性别,然后将他们插入到数据库中。当我回显变量时。我可以从user获取所有值,因为user可以输入多个子项。但是,当我想要插入到DB中时,它将只插入最后一个子项的数据

例如:如果用户对年龄为3性别M的两个孩子和第二个年龄为5性别F的孩子感兴趣,则仅插入第二个值

代码语言:javascript
复制
$age=$_POST['age'];
$gender=$_POST['gender'];

for($i=0;$i<count($gender);$i++)
{
    if($age[$i]!="" && $gender[$i]!="")
    {
        echo $age[$i];
        echo $gender[$i];
        $query = "INSERT INTO `children`(`age` , `gender`)VALUES('$age[$i]' , '$gender[$i]')";      
    }   
 }

 $result = mysqli_query($connection, $query);
 //echo $result;
 echo "<pre>";
 if (!$result)
 {
     die("Query Faile".  mysqli_errno($connection));   
 }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-09 21:43:04

for循环完成之后,您只需执行一次查询。将执行转移到循环中。这与准备好的语句很好地配合使用,这也将提高程序的安全性:

代码语言:javascript
复制
$stmt =
    mysqli_prepare($connection, "INSERT INTO `children` (`age`, `gender`) VALUES (?, ?)");

for($i = 0; $i < count($gender); $i++)
{
    if($age[$i]!="" && $gender[$i]!="")
    {
        mysqli_stmt_bind_param($stmt, "ds", $age[$i], $gender[i]);
        mysqli_stmt_execute($stmt);
    }   
}
票数 3
EN

Stack Overflow用户

发布于 2018-06-09 21:52:27

像这样修改你的代码

**

代码语言:javascript
复制
$stmt =
    mysqli_prepare($connection, "INSERT INTO `children` (`age`, `gender`) VALUES (?, ?");
$res = false;
$count = 0;
for($i = 0; $i < count($gender); $i++)
{
    if($age[$i] != "" && $gender[$i] != "")
    {
        mysqli_stmt_bind_param($stmt, "ds", $age[$i], $gender[i]);
        if(mysqli_stmt_execute($stmt)){
          ++$count;
          $res= true;
        }
    }   
}
if(!$res){
  echo "Failed after ".$count." Data added";
}else{
  echo "Job Done";
}

**

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50774853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档