【问题标题】:My code is only inserting the last file name into my database. What am I doing wrong?我的代码只是将最后一个文件名插入到我的数据库中。我究竟做错了什么?
【发布时间】:2020-07-31 06:04:36
【问题描述】:

此代码回显指定目录中的所有文件名,但仅将文件夹中最后一个文件的名称插入数据库。我必须做什么才能将目录中的所有文件名放入数据库?非常感谢

<?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();
?>

【问题讨论】:

  • 执行插入的代码部分不是$sql = "INSERT INTO myTable (fileName) VALUES ('$file')";,而是($conn-&gt;query($sql)。顺便说一句,你最好放弃那些教你将原始输入注入 SQL 代码的书或教程,如('$file')
  • 感谢您的评论和帮助。是的,我意识到我需要添加一些验证。我有很多东西要学! (此脚本仅用于帮助我在本地网络上构建数据库。)

标签: php mysql file insert


【解决方案1】:

这是因为你的 "if ($conn->query($sql) === TRUE" 在 while 循环之外。

您在 while 循环中构建 $sql,但您只在 while 循环之后执行查询,因此您只插入最后一条记录。

//建议

    <?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();

?>

【讨论】:

  • 非常感谢您提供的示例。效果很好,帮了大忙!
猜你喜欢
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 2015-11-29
  • 2016-07-18
  • 1970-01-01
  • 2019-09-08
  • 1970-01-01
  • 2019-12-23
相关资源
最近更新 更多