Как вставить несколько данных в базу данных mysql с помощью php. Я пробовал использовать для цикла, но не повезло.
//array of input boxes $id1=array($aa1,$aa2,$aa3,$aa4,$aa5,$aa6,$aa7); $timeRank1=array($a3,$a6,$a9,$a12,$a15,$a18,$a21); for ($i = 0; $i < 7; $i++) { require_once("connection.php"); $a = $id1[$i]; $b = $timeRank1[$i]; $sql = "INSERT INTO results (id,swim_rank) VALUES ('".$a."','".$b."')";
Просто создайте свой запрос в цикле и затем выполните его, когда цикл будет конкурировать
require_once("connection.php"); $sql = "INSERT INTO results (id,swim_rank) VALUES "; for ($i = 0; $i < 7; $i++) { $sql .= "('".$id1[$i]."','".$timeRank1[$i]."'),"; } $sql = rtrim($sql, ','); // run your query here
Вы также заметите, что я включил ваше соединение с БД вне цикла. Нет необходимости повторять этот звонок.
Кроме того, убедитесь, что вы либо избегаете вставленных значений, либо используете параметризованные запросы, чтобы ваши вставки были защищены от SQL-инъекций.
( Не желая переступать Джона и не набирать очки)
Чтобы уточнить John Conde's answer
: (легче показать здесь в визуальном представлении, а не в комментариях), и, как сказал Джон, «я не могу сказать точно, потому что я не знаю, какой API вы используете … "
Предполагая, что connection.php
содержит что-то вроде:
<?php $DB_HOST = "xxx"; $DB_NAME = "xxx"; $DB_USER = "xxx"; $DB_PASS = "xxx"; $con = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME); if($con->connect_errno > 0) { die('Connection failed [' . $con->connect_error . ']'); }
Запрос:
<?php require_once("connection.php"); $sql = "INSERT INTO results (id,swim_rank) VALUES "; for ($i = 0; $i < 7; $i++) { $sql .= "('".$id1[$i]."','".$timeRank1[$i]."'),"; } rtrim($sql, ','); // run your query here $result = mysqli_query($con, $sql); if ( false===$sql ) { printf("error: %s\n", mysqli_error($con)); }
Согласно справочному руководству mysql, вот как вставить несколько значений в один оператор insert.
INSERT INTO people (name, age) VALUES («Уильям», 25), («Барт», 15), («Мэри», 12);
т.е. предположим, что у нас есть таблица с именами людей с именами столбцов и возрастом.
Теперь, чтобы перевести это на PHP, хороший подход заключается в создании строки запроса. Следующий PHP-код создает такую строку.
$query_values = " INSERT INTO results (id,swim_rank) VALUES "; // notice space after VALUES if (count($id1) == count($timeRank1)) // ensure both arrays have equal number of elements { for ($i = 0; $i <= (count($id1) - 1); $i++) // remember array index starts from { $query_values .= "({$id1[$i]},{$timeRank1[$i]})" ; if ($i != (count($id1) - 1)) // you dont want a trailing comma after your last bracket { $query_values .= ","; } } }
Созданный запрос теперь должен использоваться для ввода ваших значений в вашу базу данных. Надеюсь, вы нашли это полезным. Любые другие запросы lemme знают. ура