【发布时间】:2013-06-06 11:19:16
【问题描述】:
我正在上传文件以恢复备份表(.sql 格式)... 以下代码用于上传 .sql 文件:
<form enctype="multipart/form-data" method="post">
<font style="font-size:18px;">File to import:</font><br />
<input size='30' type='file' name='filename'>
<input type="submit" name="submit" value="Upload File">
</form>
提交后,如下代码:
set_time_limit ( 0 );
//Upload File
if (isset($_POST['submit'])) {
if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
if (move_uploaded_file($_FILES['filename']['tmp_name'], $_FILES['filename']['name'])) {
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$table_name = "items";
$backup_file = $_FILES['filename']['name'];
if(!file_exists($backup_file)){
echo "File Not Exists";
}
$sql = "LOAD DATA INFILE '$backup_file' INTO TABLE $table_name";
mysql_select_db('MM_db');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not load data : ' . mysql_error());
}
echo "Loaded data successfully\n";
mysql_close($conn);
fclose($handle);
}
?>
<script>
alert('Items Uploaded Successfully');
</script>
<?php
exit();
}
}
在上传时,我收到此错误:
Could not load data : File 'c:\wamp\bin\mysql\mysql5.5.24\data\MM_db\items.sql' not found (Errcode: 2)
它好像没有找到我的 items.sql 文件,虽然我已经通过 file_exists($backup_file) 检查了它是否存在,但我仍然面临这个问题。我认为文件上传代码可能缺少某些内容?
【问题讨论】:
-
请不要这样做。您在此处获得了零 访问控制。如果有的话,您应该使用 phpMyAdmin 而不是自己滚动。请记住
LOAD DATA INFILE需要将文件保存在 MySQL 服务器上,而不是 Web 服务器上。 -
@tadman 对不起,但你错了,如果我将
$backup_file值替换为特定的文件路径 - 示例C:/items.sql并删除整个文件上传......它会像魅力一样工作,但我更喜欢以更具挑战性的方式做事! -
该路径必须与 MySQL 服务器进程位于同一台机器上。在这种情况下,可能是同一台机器。