mysql插入在某些表单字段上失败

时间:2014-07-22 19:36:54

标签: javascript php mysql

当我尝试插入mysql数据库时出现以下错误。

  

MYSQL错误:您的SQL语法中有错误;检查手册   对应于您的MySQL服务器版本,以获得正确的语法   使用“条件,状态”附近的值(' 20140715_173221.jpg',' rt',   '船只',' hf',' ''新''在第1行

我可以插入没有字段条件和状态的罚款。 这是表单/ javascript。

<script type="text/javascript">
  $(document).ready(function(){
       $('#upload select[name="Type"]').change(function(){
           if($('#upload select[name="Type"] option:selected').val() == 'Shroud' || $('#upload select[name="Type"] option:selected').val() == 'Vessel' ){
               $('#Status').show();
           }else{
               $('#Status').hide();
           }
       });
   });

   $(document).ready(function(){
       $('#upload select[name="Type"]').change(function(){
           if($('#upload select[name="Type"] option:selected').val() == 'Collector' ||
                   $('#upload select[name="Type"] option:selected').val() == 'M150' ||
                   $('#upload select[name="Type"] option:selected').val() == 'TC' ){
               $('#Condition').show();
           }else{
               $('#Condition').hide();
           }
       });
   }); 

</script>
<form id="upload" name="upload" enctype="multipart/form-data" action="ImageUpload.php" method="POST"> 

 <label for="Type">Type:</label>
 <select id="Type" name="Type">
 <option value="">Select a Type...</option>
 <option value="Shroud">Shroud</option>
 <option value="Vessel">Vessel</option>
 <option value="Collector">Collector</option>
 <option value="M150">M150</option>
 <option value="TC">TC</option>
 <option value="VanesHOBIF">Vanes/HOB/IF</option>
 </select><br><br>


 Title: <input type="text" name="UserTitle"><br> 

 <div id="Status" style="display:none">Status: 
 <input type="text" name="Status" value="">
 <br>
 </div>

 <div id="Condition" style="display:none">
 <label for="Condition">Condition:</label>
 <select name="Condition">
 <option value=" "></option>
 <option value="New">New</option>
 <option value="Cleaned">Cleaned</option>
 <option value="Drained">Drained</option>
 <option value="NA">NA</option>
 </select><br><br>
 </div> 


 <label for="Desciption">Description:</label><br>
 <textarea type="text" name = "Description" cols="40" rows= "4"></textarea><br> 
 File: <input type="file" name="file" id="file"><br> 
 <input type="submit" name="submit"value="Submit"> 
 </form>

和我的PHP帖子文件

$title=$_POST['Title'];
        $usertitle=$_POST['UserTitle'];
        $type=$_POST['Type'];
        $Description=$_POST['Description'];
        $files=($_FILES['file']['name']);
        $Condition=$_POST['Condition'];
        $Status= $_POST['Status'];



        $sql="INSERT INTO ImageTable (Title,UserTitle,Type,Description,Condition, Status) VALUES ( '$files','$usertitle', '$type', '$Description','$Condition','$Status')";

        if (!mysqli_query($con,$sql))
        {
            die('MYSQL Error: ' . mysqli_error($con));
        }

如果我回显$Condition和$ Status,我会看到表单中选择的值。不确定insert语句出了什么问题。提前致谢

3 个答案:

答案 0 :(得分:3)

Condition是MySQL保留字。

http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

如果您想继续将其用作列名,请在其周围加上刻度标记:

`Condition`

(Title,UserTitle,Type,Description,`Condition`, Status)

答案 1 :(得分:1)

在每个$ _POST和$ _GET中使用mysql_real_escape_string() 条件是保留字试图重命名。

答案 2 :(得分:1)

除了事实之外,您应该使用mysql_real_escape_string来避免SQL注入:

条件是mySQL中的reserved word。这就是你收到错误的原因。您必须重命名该字段或使用这样的反引号:`Condition`