Как вставить одну и ту же запись в базу данных несколько раз? - PullRequest
0 голосов
/ 17 июня 2020

У меня есть переменная numeri c PHP с именем $ amount, и на основе числа, заданного в этой переменной, я хочу вставить ту же запись в таблицу MySQL.

Пример:

$quantity = '4';

$sql1 = "INSERT INTO table_quantity (username, code, quantity, data) VALUES ('John', '34438', '1', now());";
$sql2 = "INSERT INTO table_quantity (username, code, quantity, data) VALUES ('John', '34438', '1', now());";
$sql3 = "INSERT INTO table_quantity (username, code, quantity, data) VALUES ('John', '34438', '1', now());";
$sql4 = "INSERT INTO table_quantity (username, code, quantity, data) VALUES ('John', '34438', '1', now());";

Ответы [ 2 ]

0 голосов
/ 20 июня 2020

Вы можете достичь этого, используя al oop и подготовленный оператор. Вам нужно выполнить один и тот же оператор несколько раз. Это также очень полезно, если значения динамические c и они могут измениться, например, значения поступают из пользовательского ввода.

Предварительное условие:
Вам необходимо открыть соединение в вашу базу данных. Если вы используете MySQL, то соединение будет выглядеть примерно так:

$pdo = new PDO("mysql:host=localhost;dbname=db_name;charset=utf8mb4", 'username', 'password', [
    \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
    \PDO::ATTR_EMULATE_PREPARES => false
]);

Теперь вы можете подготовить оператор, который мы выполним в al oop несколько раз.

$stmt = $pdo->prepare("INSERT INTO table_quantity (username, code, quantity, data) VALUES ('John', '34438', '1', now());");

Вы можете использовать любой l oop, который вам нравится, но для простого сценария, когда мы хотим, чтобы один и тот же код выполнялся несколько раз, достаточно while l oop.

$quantity = 4;
while ($quantity--) {
    $stmt->execute();
}

Если вам будет проще, вы можете использовать for l oop.

for($quantity = 0; $quantity < 4; $quantity++) {
    $stmt->execute();
}
0 голосов
/ 17 июня 2020

Попробуйте что-то вроде этого:

// NOTICE - Make sure you are escaping any end-user supplied values correctly - See PHP docs for examples of how
$sql_template = 'INSERT INTO `table_quantity` (`username`, `code`, `quantity`, `data`) VALUES (\'John\', \'34438\', \'1\', now());';
$quantity     = 5;
$sql          = '';

foreach (range(1, $quantity) as $i) {
  $sql .= $sql_template;
}

echo $sql;

См. Пояснения в следующих документах:

...