我的代码在下面,我不明白这段代码有什么问题,因为我的数据没有保存在mysql-db表中。有人告诉我我的代码有什么问题吗?====================================================
<?php
$con = mysql_connect('localhost','root','') or die(mysql_error());
mysql_select_db('csv_data',$con) or die(mysql_error());
$data = array();
if(isset($_FILES['submit'])){
if($FILES['csv_file']['size'] > 0){
$file = $_FILES['csv_file']['tmp_name'];
$handle = fopen($file,"r");
while($data = fgetcsv($handle, 134217728, ',')){
$query = "INSERT INTO data(url) VALUES ('".$data[0]."')";
mysql_query($query) or die(mysql_error());
echo "File Uploaded.";
}
}
}
?>
<body>
<form name="frm" action="save_csv_in_mysql_table.php" method="post">
<input type="file" name="csv_file" value="Upload Csv File"/>
<input type="submit" name="submit" value="Upload CSV File"/>
</form>
</body>
您需要使用if(isset($_POST['submit'])){
PHP:
$con = mysql_connect('localhost','root','') or die(mysql_error());
mysql_select_db('csv_data',$con) or die(mysql_error());
$data = array();
if(isset($_POST['submit'])){
if($FILES['csv_file']['size'] > 0){
$file = $_FILES['csv_file']['tmp_name'];
$handle = fopen($file,"r");
while($data = fgetcsv($handle, 134217728, ',')){
$query = "INSERT INTO data(url) VALUES ('".$data[0]."')";
mysql_query($query) or die(mysql_error());
echo "File Uploaded.";
}
}
}
什么是$_FILES['submit']?我想,你没有这个索引。
尝试在开始的中添加
print_r($_POST);
print_r($_FILES);
然后创建一个正常语句。
例如:
if (isset($_FILES['csv_file'])) {do something}
第二:不要在mysql_query中使用INSERT。阅读PDO,它既安全又舒适。您的代码中存在漏洞(SQL注入)。
您的表单构建错误,因此没有文件正在上传:
<form enctype="multipart/form-data" name="frm" action="save_csv_in_mysql_table.php" method="post" >
^^^^^^^^^^^^^^^^^^^^^^^^^^^^--missing
然后你没有检查上传是否真的成功,只是盲目地向前走:
if (isset($_FILES['csv_file']['error']) && ($_FILES['csv_file']['error'] !== UPLOAD_ERR_OK)) {
die("Upload failed with error code#: " . $_FILES['csv_file']['error']);
}
然后,您盲目地尝试从该文件中提取数据,并将该数据直接插入到查询字符串中,这也会使您很容易受到SQL注入攻击。