我有这个代码,它将目录中的文件名插入数据库
<?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));
可能是什么问题?
答案 0 :(得分:5)
你在这里混合mysql_ *和mysqli_ functions $filename=mysql_real_escape_string($filename);
。
没有与数据库的mysql_连接,这就是您收到此错误的原因。这就是你应该做的事情
$filename = mysqli_real_escape_string($con, $filename);
mysqli_query($con,"INSERT INTO Organ (Name) VALUES ('$filename')");
另外......插入它之后逃脱字符串是没有用的。无论你使用什么数据库api。
答案 1 :(得分:2)
因为您使用的是mysqli_*
!因此,您需要在 mysql 之后使用mysqli_real_escape_string
( i
),请参阅文档here。
答案 2 :(得分:-4)
您使用mysqli功能连接。但是你使用的是mysql函数(mysql_real_escape_string。)这就是问题所在。如果要使用mysql_real_escape_string,可以使用mysql_connect连接。但我不建议您使用mysql_connect。因为它会在php中被弃用。 5.5