Moim zadaniem jest stworzenie bazy danych z pliku csv. Napisalem to tak, ale prawdopodobnie da sie to zrobić znacznie lepiej. Mój pomysł to zrobienie 2 plików - jeden do stworzenia tabelek, a drugi do "insertowania danych". Problemem na pewno jest powtarzanie kodu, da sie do jakos pozamykac w klasie, zeby było czytelniej? Poza tym martwi mnie, to że musze podawać login i hasło do bazy danych w pliku, może to też da sie zrobić lepiej. Czekam na ocene i sugestie poprawy, z góry bardzo dziękuje, plusy czekają do rozdania
db.php
<?php
# code...
$servername = "localhost";
$username = "root";
$password = "haslo";
$dbname = "mysql";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// sql to create table
$sql = "CREATE TABLE Baza_Struktura (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
code INT(6) NOT NULL,
value INT(10) NOT NULL,
status INT(6),
id_parent INT(6)
)";
if ($conn->query($sql) === TRUE) {
echo "Table MyGuests created successfully";
} else {
echo "Error creating table: " . $conn->error;
}
$file = fopen('baza_strukturacsv.csv', 'r');
while (($line = fgetcsv($file)) !== FALSE) {
$conn->close();
print_r($line);
}
fclose($file);
?>
insert.php
<?php
$servername = "localhost";
$username = "root";
$password = "haslo";
$dbname = "mysql";
/// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$file = fopen('baza_strukturacsv.csv', 'r');
while (($line = fgetcsv($file)) !== FALSE) {
$sql = "INSERT INTO Baza_Struktura (id, code, value, status, id_parent)
VALUES (" . $line[0] . ", " . $line[1] .
", " . $line[2] . ", " . $line[3] . ", " . $line[4] . ")";
if (mysqli_query($conn, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
//print_r($line[0] . " " . $line[1]);
print_r($line);
}
mysqli_close($conn);
fclose($file);
?>