【问题标题】:Split up array value into seperate rows将数组值拆分为单独的行
【发布时间】:2022-01-14 09:32:51
【问题描述】:

我将 3 个数组放入这些变量中:

$title = $_REQUEST['test_bestellte_title'];
$anzahl = $_REQUEST['test_bestellte_anzahl'];
$groesse = $_REQUEST['test_bestellte_groesse'];

我想把这个值数组插入到sql表中

   ID |  Anzahl    | title                 | groesse
-----------------------------------------
    1   |   4      |  Schulkind Shirt gelb |   S
    1   |   5      |  Friends Shirt lila   |   M
    1   |   3      |  Shirt Sesamstraße    |   S    
    1   |   4      |  Shirt Sesamstraße    |   L

但我不知道如何插入它,如上所示

到目前为止,我将它们分开,这就是我卡住的地方

   foreach ($anzahl as $einzelanzahl) {
       echo $einzelanzahl['test_bestellte_anzahl'];
   }
   foreach ($title as $einzeltitle) {
       echo $einzelname['test_bestellte_groesse'];
   }
   foreach ($groesse as $einzelgroesse) {
       echo $einzelgroesse['test_bestellte_artikel'];
   }

提前致谢!

【问题讨论】:

  • 请发布数组数据文本,而不是图片!
  • 好的!下次会做,谢谢

标签: php mysql sql


【解决方案1】:

假设三个数组的键总是相同的,使用一个循环:

$arrayOne = array('a', 'b', 'c', 'd');
$arrayTwo = array('w', 'x', 'y', 'z');
$arrayThree = array('m', 'n', 'o', 'p');

foreach ($arrayOne as $key => $valueOne) {
  $valueTwo = $arrayTwo[$key];
  $valueThree = $arrayThree[$key];
  // save your table row to database...
  echo "key: $key one: $valueOne two: $valueTwo three: $valueThree<br/>";
}

/* output:
key: 0 one: a two: w three: m
key: 1 one: b two: x three: n
key: 2 one: c two: y three: o
key: 3 one: d two: z three: p
*/

【讨论】:

    【解决方案2】:

    我的意思是你可以使用下一个代码和平:

    <?php
    
        $title = $_REQUEST['test_bestellte_title'];
        $anzahl = $_REQUEST['test_bestellte_anzahl'];
        $groesse = $_REQUEST['test_bestellte_groesse'];
        
        $query = "INSERT INTO the_table (ID, Anzahl, title, groesse) VALUES (?, ?, ?, ?)";
        $stmt = $pdo->prepare($query);
        
        foreach ($title as $id=>$einzelanzahl) {
            $stmt->execute([1, $title[$i], $anzahl[$i], $groesse[$i]]);
        }
    

    PHP PDO online

    【讨论】:

      【解决方案3】:

      如果所有数组长度相同:

      $title = $_REQUEST['test_bestellte_title'];
      $anzahl = $_REQUEST['test_bestellte_anzahl'];
      $groesse = $_REQUEST['test_bestellte_groesse'];
      
      $mysqli = new mysqli("localhost","my_user","my_password","my_db");
      // Check connection
      if ($mysqli -> connect_errno) {
        echo "Failed to connect to MySQL: " . $mysqli -> connect_error;
        exit();
      }
      $stmt = $mysqli->prepare("INSERT INTO MyTable (`Anzahl`, `title`, 
         `groesse`) VALUES (?, ?, ?)");
      for ($i = 0; $i < count($title); $i) {
         // prepare and bind
         $stmt->bind_param($title[$i], $anzahl[$i], $groesse[$i]);
         $stmt->execute();
      
      }
      
      $stmt->close();
      $mysqli->close();
      

      【讨论】:

      • prepare语句可以移到loop之前
      • 我知道了,谢谢。
      • 为我工作,谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      • 2020-07-07
      • 2011-07-08
      • 2012-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多