作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在上传文件以恢复备份表(.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)
检查了它是否存在,但我仍然面临这个问题。我认为文件上传代码可能缺少某些内容?
最佳答案
LOAD DATA INFILE 无法执行 SQL 脚本中找到的 SQL 语句。它期望文件包含文本数据以及作为分隔符和定界符的符号选项。它不识别 SQL 语句。
如果您在 SQL 脚本上使用 LOAD DATA INFILE,那么您只需将文本 SQL 语句加载到数据库中,这与执行 SQL 语句本身有很大不同。
如果您需要在脚本中执行 SQL 语句,您可以在 phpMyAdmin 应用程序中找到执行此操作的代码。从头开始复制此功能比听起来要困难得多。请参阅我对以下问题的回答中的示例:
更好的解决方案是使用 shell_exec() 执行 SQL 脚本来启动 mysql 客户端,并将上传 SQL 脚本作为输入。
但是 @tadman 是正确的,这是一件危险且不安全的事情,允许用户输入发送您逐字执行的 SQL 脚本。您无法知道他们将在该脚本文件中包含哪些恶意查询!
关于php - 通过PHP上传导入.sql文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17030029/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!