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したがって、( iafter mysqlを使用して) 使用する必要があります。こちらのドキュメントを参照してください。

于 2013-07-29T21:35:44.333 に答える
-4

mysqli 関数で接続します。しかし、mysql 関数 (mysql_real_escape_string) を使用しています。これが問題です。mysql_real_escape_string を使用したい場合は、mysql_connect で接続できます。しかし、mysql_connect を使用することはお勧めしません。PHPでは非推奨になるためです。5.5

于 2013-07-29T21:35:31.833 に答える