0

我有这段代码将目录中的文件名插入数据库

<?php
include("db.php");

 $path = 'C:\Users\Firdavs\Desktop\Ypp';
 $directories = new RecursiveIteratorIterator(
    new ParentIterator(new RecursiveDirectoryIterator($path)), 
    RecursiveIteratorIterator::SELF_FIRST);

foreach ($directories as $directory) {
        if($directory->isDir())
          {
             foreach (new DirectoryIterator($directory) as $file)
              {
                if($file->isDot()) continue;
                if($file->isFile())
                  {
                     $filename=$file->getFilename();
                      $ext = pathinfo($filename, PATHINFO_EXTENSION);
                      if($ext=='docx')
                      {
                         mysqli_query($con,"INSERT INTO Organ (Name) VALUES ('$filename')");
                         $filename=mysql_real_escape_string($filename);
                      }

                  }
              }

          }
}

?>

它显示如下警告

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user ''@'localhost' (using password: NO) in Y:\home\localhost\www\jurist\import.php on line 22

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in Y:\home\localhost\www\jurist\import.php on line 22

但代码仍在工作,将文件名插入数据库;

我的 db.php 正在关注

$con= mysqli_connect("localhost","root","mypassword","jurist") or die("Error " . mysqli_error($con));

可能是什么问题?

4

3 回答 3

5

你在这里混合 mysql_* 和 mysqli_ 函数$filename=mysql_real_escape_string($filename);

没有与数据库的 mysql_ 连接,这就是您收到此错误的原因。这是你应该做的

$filename = mysqli_real_escape_string($con, $filename);
mysqli_query($con,"INSERT INTO Organ (Name) VALUES ('$filename')");

另外...在插入字符串后转义字符串也没有好处。无论您使用的是什么数据库 api。

于 2013-07-29T21:36:24.130 回答
2

因为你在用mysqli_*!所以你需要使用mysqli_real_escape_string(使用mysqli之后),请参阅此处的文档。

于 2013-07-29T21:35:44.333 回答
-4

你用 mysqli 函数连接。但是你使用的是mysql函数(mysql_real_escape_string)。这就是问题所在。如果要使用 mysql_real_escape_string,可以使用 mysql_connect 进行连接。但我不建议你使用mysql_connect。因为它将在 php.ini 中被弃用。5.5

于 2013-07-29T21:35:31.833 回答