Мой код только вставляет последнее имя файла в мою базу данных. Что я делаю неправильно? - PullRequest
0 голосов
/ 17 апреля 2020

Этот код повторяет все имена файлов из указанного каталога, но только вставляет имя последнего файла в папке в базу данных. Что я должен сделать, чтобы получить все имена файлов в каталоге в базу данных? Большое спасибо

<?php
$servername = "localhost";
$username = "root";
$password = "mypswrd";
$dbname = "mydb";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$dir = "myFiles";    // directory path to files
// Open a directory, and read its contents
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            echo $file . "</br>";
            $sql = "INSERT INTO myTable (fileName) VALUES ('$file')";
        }
        closedir($dh);
    }
}
if ($conn->query($sql) === true) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>

1 Ответ

0 голосов
/ 17 апреля 2020

Это потому, что ваш "if ($ conn-> query ($ sql) === TRUE" находится вне времени, пока l oop.

Вы строите свой $ sql внутри while l oop, но вы выполняете запрос только через некоторое время l oop, следовательно, вы вставляете только последнюю запись.

// Предложение

    <?php
$servername = "localhost";
$username = "root";
$password = "mypswrd";
$dbname = "mydb";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$dir = "myFiles";    // directory path to files
// Open a directory, and read its contents
if (is_dir($dir)){
  if ($dh = opendir($dir)){
    while (($file = readdir($dh)) !== false){
         echo $file . "</br>";
          $sql = "INSERT INTO myTable (fileName) VALUES ('$file')";
            if ($conn->query($sql) === TRUE) {
            echo "New record created successfully";
        }
        else {
        echo "Error: " . $sql . "<br>" . $conn->error;
        }
         }
        closedir($dh);


    }
  }

$conn->close();

?>
...