Ниже мой скрипт для импорта данных в mysql:
foreach ($file_data as $row) {
$sku = $row[$_POST["sku"]];
$title = $row[$_POST["title"]];
$slug = $row[$_POST["title"]];
$product_type = "physical";
$description = $row[$_POST["description"]];
}
if (isset($sku))
{
$query = "
INSERT INTO products
(sku, slug, product_type)
VALUES ".implode(",", $sku).",".implode(",", $slug).",".implode(",", $product_type)."
";
$statement = $connect->prepare($query);
if ($statement->execute())
{
echo 'Data Imported Successfully';
}
}
А теперь кто-нибудь может мне помочь, как теперь загрузить $title и $description во вторую таблицу product_details?
@обновление @Mehrwarz
foreach ($file_data as $row) {
$sku = $row[$_POST["sku"]];
$title = $row[$_POST["title"]];
$slug = $row[$_POST["slug"]];
$product_type = "physical";
$description = $row[$_POST["description"]];
if (isset($sku)) {
$statement = $connect->prepare("INSERT INTO products
(sku, slug, product_type)
VALUES '$sku','$slug','$product_type'");
$statement2 = $connect->prepare("INSERT INTO product_details
(title, description)
VALUES '$title','$description'");
if (!$statement->execute()) {
$error = 'None or part of the data was updated';
}
}
}
echo $error ?? 'Data Updated Successfully';
@ADyson в настоящее время в этом запросе я могу загружать данные только в одну таблицу «products», и как теперь добавить одновременно и загрузить данные во вторую таблицу «product_details»?
Чтобы вставить в другую таблицу, вы просто делаете еще один запрос на вставку
Ответ на ваш вопрос уже дан в предыдущем вопросе здесь stackoverflow.com/questions/74576424/…
@Mehrwarz да, я сейчас думаю об этом. И как вы думаете, в этом ответе это должно работать? $statement = $connect->prepare("ОБНОВИТЬ продукты SET sku = '$sku', ГДЕ sku = '$data' AND lang_id = '$lang_id'"); $statement2 = $connect->prepare("UPDATE product_details SET title = '$title' WHERE sku = '$data' AND lang_id = '$lang_id'"); ? (пожалуйста, не смотрите на переменные, просто интересно, решит ли проблему добавление statment2 и другого запроса.)
@Mehrwarz, ты имеешь в виду что-то вроде этого? prnt.sc/CDLu92ZbUgeh
Сначала переберите каждую строку и создайте цепочку значений, например ('row1val1','row1val2','row1Val3'),('row2val1','row2val2','row2val3').... для обеих таблиц, а затем запустите запрос на вставку.
@Mehrwarz В настоящее время я добавляю цикл для каждой строки, но я не уверен в этом ('row1val1','row1val2','row1Val3'),('row2val1','row2val2','row2val3'). Не могли бы вы проверить мое обновление и помочь мне исправить этот код в ответ?
Отвечает ли это на ваш вопрос? вставить данные из таблицы html в mysql






Может быть, вы можете нажать любой массив
<?php
$query_array = [];
foreach ($file_data as $row) {
$sku = $row[$_POST["sku"]];
$title = $row[$_POST["title"]];
$slug = $row[$_POST["title"]];
$product_type = "physical";
$description = $row[$_POST["description"]];
if (isset($sku)){
$query = 'INSERT INTO products
(sku, slug, product_type)
VALUES SET title = "'.$title.',sku = "'.$sku.'", etc.. #add more"';
$query = rtrim($query,',');
array_push($query_array,$query);
}
}
foreach ($query_array as $key => $value) {
$mysqlconn->query($value);
}
и как теперь добавить к этому данные для вставки $title = $row[$_POST["title"]]; и $description = $row[$_POST["description"]]; во вторую таблицу product_details?
Это может сработать для вас.
$T1Values = "";
$T2Values = "";
foreach ($file_data as $row) {
$T1Values .= "('" . $row[$_POST['sku']] . "','" . $row[$_POST['slug']] . ",'" . $row[$_POST['product_type']] . "),";
$T2Values .= "('" . $row[$_POST['title']] . "','" . $row[$_POST['description']] . "'),";
}
if (isset($sku)) {
$T1Values = trim(',', $T1Values);
$T2Values = trim(',', $T2Values);
$query1 = "INSERT INTO products (sku, slug, product_type) VALUES($T1Values)";
$statement = $connect->prepare($query1);
if ($statement->execute()) {
$query2 = "INSERT INTO product_details (title, product_details) VALUES($T2Values)";
$statement = $connect->prepare($query2);
if ($statement->execute()) {
echo "All records inserted successfully";
}
}
}
Это уязвимо для SQL-инъекций. Нет смысла использовать подготовленные операторы, если вы также не параметризуете входные значения.
Ну вы уже знаете, как сделать вставку. Так в чем же проблема? Вы случайно не спрашиваете, как получить идентификатор строки, вставленный в продукты, чтобы вы могли ссылаться на него в таблице сведений о продукте? Если нет, то непонятно, в чем проблема.