【问题标题】:explode and then insert to table爆炸然后插入到表中
【发布时间】:2014-12-04 03:29:07
【问题描述】:

我只是对如何分解字符串以单独插入数据库感到困惑。

我的代码:

$mymotives = "Entrega de Documentos, Orientacion, Username y Password, Convalidacion";          
$ExplodeMotives = explode(", ", $mymotives);
foreach ($ExplodeMotives as  $value) {
    $queryAdd = "INSERT INTO StuSelectCateg (attendedBy, personName, personLast, depName, categoryName, timeOut) 
                 VALUES ('".$_SESSION["nomEmpleado"]. " " . $_SESSION["appEmpleado"]."', '".$_SESSION['estNombre']."', '".$_SESSION['estApellido']."', '".$_SESSION['concentracion']."', '$value', '$stuTOut')";
    mysqli_query($con, $queryAdd);
}

我希望我的输出像这样在我的数据库中

Table | Category
-----------------------------
1     | Entrega de Documentos
2     | Username y Password
3     | Convalidacion

【问题讨论】:

  • 这只是做任何事情,我在我的数据库中的输出将是Entrega de Documentos、Orientacion、用户名y密码、Convalidacion 相同

标签: php mysql sql string explode


【解决方案1】:
<?php
      $mymotives = "Entrega de Documentos, Orientacion, Username y Password, Convalidacion";
      $ExplodeMotives = explode(", ", $mymotives);
      foreach ($ExplodeMotives as  $value)
      {
           $queryAdd[] = "INSERT INTO StuSelectCateg (attendedBy, personName, personLast, depName, categoryName, timeOut) VALUES ('".$_SESSION["nomEmpleado"]. " " . $_SESSION["appEmpleado"]."', '".$_SESSION['estNombre']."', '".$_SESSION['estApellido']."', '".$_SESSION['concentracion']."', '$value', '$stuTOut')";
      }
     mysqli_query($con, $queryAdd);
?>

您可以将变量查询添加到像 bove 一样的数组中。

【讨论】:

  • 这会让我的数据变成那样吗?
  • 我收到此错误警告:mysqli_query() 期望参数 2 为字符串,数组在第 104 行的 C:\xampp\htdocs\BackUP\Empleados.php 中给出
【解决方案2】:

哇,感谢上帝,我自己做的,不管怎样,尽管这是错误的,但还是谢谢

$mymotives=$stuMotives; $ExplodeMotives = explode(", ", $mymotives); foreach ($ExplodeMotives as $value) { $queryAdd = "INSERT INTO StuSelectCateg (attendedBy, personName, personLast, depName, categoryName, timeOut) VALUES ('".$_SESSION["nomEmpleado"]. " " . $_SESSION["appEmpleado"]."', '$stuName', '$stuApell', '$stuDepart', '$value', '$stuTOut')"; mysqli_query($con, $queryAdd); }

【讨论】:

  • 这很糟糕,因为当您可以在一次调用中完成所有操作时,您正在执行多次插入调用。
【解决方案3】:

回复相当晚,但想指出,当您可以在一个 sql 查询中执行所有插入时,使用其他解决方案您将创建到 mysql 的多个连接。在下面使用我的解决方案。

<?php
      $string = "Entrega de Documentos, Orientacion, Username y Password, Convalidacion";
      $categories = explode(", ", $string);

      $query = "INSERT INTO StuSelectCateg (attendedBy, personName, personLast, depName, categoryName, timeOut) VALUES ";

      foreach ($ExplodeMotives as  $value)
      {
           $query_vals[]  =   "('" 
                          .$_SESSION["nomEmpleado"]. "', '" 
                          .$_SESSION["appEmpleado"]."',  '" 
                          .$_SESSION['estNombre']."', '"
                          .$_SESSION['estApellido']."', '"
                          .$_SESSION['concentracion']."', '"
                          .$value."', '"
                          .$stuTOut. "')";
      }
     $query = $query . implode(", ", $query_vals );
     mysqli_query($con, $query);
?>

这将执行一个查询,例如在一个 mysql 插入调用中插入所有行:

INSERT INTO tableName
   (column1,column2,column3,column4)
VALUES
  ('value1' , 'value2', 'value3','value4'),
  ('value1' , 'value2', 'value3','value4'),
  ('value1' , 'value2', 'value3','value4');

【讨论】:

    【解决方案4】:

    获取字符串数据并分解并存储到数据库中

    $str = "abcde@gmail.com,dfkjp@gmail.com,veer@gmail.com,kalll@gmail.com";
        $emails=explode(",",$str);
        $key=1;
        foreach($emails as $email){
        //echo $email.'<br>';
        $sql="INSERT INTO `block_simplenotify`(`id`,`email`) VALUES ('$key++','$email')";
        }
    

    【讨论】:

    • 虽然欢迎使用此代码 sn-p,并且可能会提供一些帮助,但它会是 greatly improved if it included an explanation of how 和 why 这解决了问题。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人!请edit您的答案添加解释,并说明适用的限制和假设。
    猜你喜欢
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 2017-11-17
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    相关资源
    最近更新 更多