Mysql文件上传错误?

时间:2011-09-26 09:31:50

标签: php mysql

以下是我上传文件的代码。一切都很完美。此代码将文件上传到目标文件夹,MySQL查询工作完美,并将所有数据插入到数据库中的相关字段中。但它不会转到header()函数中提到的页面。它最后给我一个错误

  

错误:请再试一次,   您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的“1”附近使用正确的语法

我认为它发生在最后一次if($ exe)执行时

<?php

include('./includes/connection.php');

if(!$_POST['song_name']){
    header('location: pro_add.php');
    exit;
}

$path = "../upload_data/";
$uniqid = uniqid(strtotime('now'));
$uniq_name = $uniqid .'_'. $_FILES['file']['name'];

$complete_path = $path . $uniq_name;

$move = move_uploaded_file($_FILES['file']['tmp_name'],$complete_path);

if(!$move){
    echo 'Error: please try again'."<br/>";
}

$query = mysql_query("INSERT INTO products SET
    sub_cat_id='".$_POST['sub_cat_id']."',
    song_name='".$_POST['song_name']."',
    artist='".$_POST['artist']."',
    path='".$complete_path."' ");

$exe = mysql_query($query);

if($exe){
    header('location: products.php');
    exit;
}else{
    echo 'Error: please try again, <br />' . mysql_error();
}

?>

2 个答案:

答案 0 :(得分:1)

您正在查询查询结果:

$query = mysql_query('...');
$exe   = mysql_query($query);

只需将$query = mysql_query('...');替换为$exe = mysql_query('...')即可。

修改

正如您的问题的评论者也指出的那样,您的脚本极其容易受到SQL注入攻击。在将此在线上之前,您应该阅读它。

http://en.wikipedia.org/wiki/SQL_injection
http://php.net/manual/en/security.database.sql-injection.php

答案 1 :(得分:1)

代码很好,但它只有一个问题。可能是你已经忘记了......

 $query = mysql_query("INSERT INTO products SET
           sub_cat_id='".$_POST['sub_cat_id']."',
           song_name='".$_POST['song_name']."',
           artist='".$_POST['artist']."',
           path='".$complete_path."' ");

而不是你应该写

$query = "INSERT INTO products SET
          sub_cat_id='".$_POST['sub_cat_id']."',
          song_name='".$_POST['song_name']."',
          artist='".$_POST['artist']."',
          path='".$complete_path."'";

如果你替换这么多代码,它将正常工作..