У меня есть проблема, чтобы вставить в mysql все данные из входных данных и цикл foreach (в mysql входят только одни данные) - PullRequest
0 голосов
/ 04 марта 2019

Только что последние данные вводятся в 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);
?>

У вас есть решение для этой основной проблемы, большое спасибо

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

причина вашей реальной проблемы

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

, поэтому вы каждый раз перезаписываете переменную $ sql, и в конце цикла вы получаете последнее значение.но смотрите комментарии по различным вопросам / предложениям с этим кодом

0 голосов
/ 04 марта 2019

Редактировать: 5 марта 2019

Проблема с вашим кодом была, так как в цикле for $ sql всегда перезаписывается, выполняется только последний $ sql.

AsКак отметил @ 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);
?>

в основном вместо выполнения нескольких операторов вставки вы создаете один оператор и выполняете его.

======================================================================== Старый ответ

Вы должны выполнить SQL внутри foreach.Обратитесь ниже.

<?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);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...