我的代码如下,我不明白这段代码中有什么问题,因为我的数据没有保存在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>
答案 0 :(得分:0)
您需要使用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.";
}
}
}
答案 1 :(得分:0)
什么是$ _FILES [&#39;提交&#39;]?我想,你没有这个索引。
尝试在开头添加
print_r($_POST);
print_r($_FILES);
并创建一个正常的声明。
例如:
if (isset($_FILES['csv_file'])) {do something}
第二种:不要将INSERT与mysql_query一起使用。了解PDO,它的安全性和舒适性。您的代码中存在一个漏洞(SQL注入)。
答案 2 :(得分:0)
您错误地构建了表单,因此没有上传文件:
<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 injection attacks开放。