У меня есть простая команда fputcsv для моего SQL-запроса. Но иногда мой экспорт имеет больше строк и разных первичных ключей. Мое желание состоит в том, чтобы разделить каждый результат с другим первичным ключом на новый экспорт csv.Как разделить экспорт sql-запроса с fputcsv
Пример:
| *row 1 | row 2 | row 3 |
|.......27 |......45 |......aa |
|.......27 |......35 |......ab |
|.......28 |......85 |......bb |
|.......28 |......65 |......bc |
Фактическая ситуация: Строка 1 имеет первичный ключ (ORDER_ID). Каждый день я запускаю cronjob со всеми заказами. Таким образом, файл имеет более одного порядка (как пример выше = заказ 27, заказ 28 и т. Д.). Мой поставщик нуждается в каждом заказе csv-файла. Поэтому мне нужен код, который разбивает запрос на что-то вроде «если order_id отличается, поэтому создайте новый файл ... и так далее ...». Это возможно?
<?php
$servername = "Jarvis";
$username = "TonyStark";
$password = "iLoveIronMan";
$dbname = "TheAnvengers";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT o.order_id, o.customer_id, op.quantity, op.model FROM oc_order o INNER JOIN oc_order_product op ON o.order_id = op.order_id INNER JOIN oc_product p ON op.product_id = p.product_id WHERE o.order_status_id = 2 AND p.location = 1 ORDER BY o.order_id, op.model";
$file = fopen('../files/in/filename.csv', 'w');
if ($rows = mysqli_query($conn, $sql)) {
while ($row = mysqli_fetch_assoc($rows)) {
fputcsv($file, $row, ';');
}
mysqli_free_result($rows);
}
mysqli_close($conn);
fclose($file);
?>
Ваш код достаточно ясен, но, пожалуйста, будьте более ясны в отношении того, чего вы пытаетесь достичь, как пример результата SQL и CSV-файл (ы), который вы хотели бы выбраться из него. –
Спасибо. Совершено в исходном сообщении выше ;-) – 27eleven