繁体   English   中英

我有一个问题要从输入和foreach循环中将所有数据插入mysql中(只有一个数据进入mysql)

[英]I have a problem to insert into mysql all data from inputs and foreach loop ( only one data enters mysql)

仅最后一个数据通过此程序进入mysql:

<?php

$servername = "localhost";
$username = "bern...";
$password = "password";
$dbname = "base";

$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo $_POST["quantité"];
$a = $_POST["trekking"];

foreach ($a as $v) {
    echo $v . "<br />\n";
    $sql =  "INSERT INTO Donnesmi (commentaire) VALUES ('$v')";
}
if (mysqli_query($conn, $sql)) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
?>

您是否有针对此基本问题的解决方案,非常感谢

您实际问题的原因是

foreach ($a as $v) {
     echo $v . "<br />\n";
     $sql =  "INSERT INTO Donnesmi (commentaire) VALUES ('$v')";
 }

因此,您每次都会覆盖$ sql变量,并且在循环结束时,您将得到最后一个值。 但请参阅此代码中有关各种问题/建议的注释

编辑:2019年3月5日

您的代码的问题是,因为在for循环中$ sql总是被覆盖,仅执行最后的$ sql。

正如@ jameson2012所指出的,实现此目标的一种最佳方法是,

<?php

$servername = "localhost";
$username = "bern...";
$password = "password";
$dbname = "base";

$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo $_POST["quantité"];
$a = $_POST["trekking"];


$values = [];
foreach ($a as $v) {
  echo $v . "<br />\n";
  $values[] = "('$v')";
}
$sql = "INSERT INTO Donnesmi (commentaire) VALUES " . emplode(',', $values);
if (mysqli_query($conn, $sql)) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
?>

基本上,而不是运行多个insert语句,而是构建一个单个语句并执行它。

================================================== ======================老答案

您必须在foreach中执行SQL。 请参考以下内容。

<?php

$servername = "localhost";
$username = "bern...";
$password = "password";
$dbname = "base";

$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo $_POST["quantité"];
$a = $_POST["trekking"];

foreach ($a as $v) {
  echo $v . "<br />\n";
  $sql =  "INSERT INTO Donnesmi (commentaire) VALUES ('$v')";

  if (mysqli_query($conn, $sql)) {
      echo "New record created successfully";
  } else {
      echo "Error: " . $sql . "<br>" . mysqli_error($conn);
  }
}
mysqli_close($conn);
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM