2014-12-13 71 views
2

我想插入多個列表框值到數據庫中,但無論如何這個值沒有被插入到數據庫中。我想我的PHP文件中有一些問題多個列表框值沒有被插入MySQL數據庫使用PHP

這是我的JavaScript文件

$(document).ready(function() { 



     jQuery("#skill-form").validationEngine(); 



      $("#skill-form").on("submit",function(e) { 

       e.preventDefault(); 

       if($("#skill-form").validationEngine('validate')) { 
        var form_data = $("form").serialize(); 
         $.post("insert.php",{form_values : form_data},function(data) { 
         var Data = jQuery.parseJSON(data); 



        }); 

     } else { 
      return false; 
     } 


     }); 

}); 

這是我的HTML文件

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 
     <meta name="description" content=""> 
     <meta name="author" content=""> 

     <link href="css/bootstrap.min.css" rel="stylesheet"> 


     <link rel="stylesheet" href="css/validationEngine.jquery.css"> 



    </head> 

<body> 





<form class="form-horizontal" role="form" action="#" method="post" id="skill-form"> 

    <div class="form-group"> 

       <br> <br> <br> <br> <br> <br> <br> 
      <label class="col-sm-2 control-label">States:</label> 
      <div class="col-sm-6"> 


<select name="which_state[]" id="which_state" class="form-control" multiple="multiple" data-validation-engine="validate[required]" data-errormessage-value-missing="Please Select any one option" > 
          <option value="Colorado">Colorado</option> 
          <option value="Florida">Florida</option> 
          <option value="Illinois">Illinois</option> 
          <option value="Michigan">Michigan</option> 
          <option value="Minnesota">Minnesota</option> 
          <option value="Ohio">Ohio</option> 
          <option value="Texas">Texas</option> 
          <option value="Wisconsin">Wisconsin</option> 
</select> 

</div> 

</div> 

     <div class="form-group"> 
      <div class="col-sm-offset-2 col-sm-10"> 
      <button type="submit" class="btn btn-primary" id="register" name="submit">Submit</button> 
      </div> 


</form> 


    <script src="js/jquery.js"></script> 



<script type="text/javascript" src="js/jquery.validationEngine-en.js"></script> 

     <script type="text/javascript" src="js/jquery.validationEngine.js"></script> 



     <script type="text/javascript" src="js/managestage.js"></script> 



</body> 
</html> 

這是我的PHP文件

<?php 

    require_once("dbcon.php"); 

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{ 
    $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue; 

    switch ($theType) { 
     case "text": 
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
      break; 
     case "long": 
     case "int": 
      $theValue = ($theValue != "") ? intval($theValue) : "NULL"; 
      break; 
     case "double": 
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL"; 
      break; 
     case "date": 
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
      break; 
     case "defined": 
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; 
      break; 
    } 
    return $theValue; 
} 


if(isset($_POST["form_values"])) 
{ 
    $form_data = urldecode($_POST["form_values"]); 

    preg_match_all('#(\w+)=([^&=]*)(?:&|$)#', $form_data, $matches, PREG_SET_ORDER); 
    $result = array(); 
     $i = 0;  
      foreach ($matches as $m) { 
      list(, $key, $value) = $m; 
      if (!strlen($value)) { 
      $i = (int)$key; 
      } else { 
      $result[$i][$key] = $value; 
     } 
} 


     $which_state = $result[0]["which_state"]; 



     $insertSQL = sprintf("INSERT INTO test1 (States) VALUES (
       %s 
      )", 
          GetSQLValueString(implode(',', $_POST['which_state']), "text")); 


     try 
     { 

      $query_insert = $db->prepare($insertSQL); 
      $result_insert = $query_insert -> execute(array(':which_state'=>$which_state)); 

     } 
    catch(PDOException $ex) 
     { 

      die("Failed to run query: " . $ex->getMessage()); 
     } 

} 
    ?> 
+1

沒有答案,但只是一個觀察 - 你是直接建立你的價值觀查詢 - >'$ insertSQL = sprintf的(「INSERT INTO TEST1 (States)VALUES(%s)「,GetSQLValueString(implode(',',$ _POST ['which_state']),」text「));',所以當你做'$ query_insert = $ db-> prepare($ insertSQL); $ result_insert = $ query_insert - > execute(array(':which_state'=> $ which_state));'由於查詢中沒有':which_state',因此prepare/execute不能正常工作。 – Sean 2014-12-13 16:23:41

+1

另外,因爲您正在使用'PDO'並進行準備,所以不需要使用舊的'GetSQLValueString()'dreamweaver函數,該函數用於在將值/字符串插入到'mysql_query()'查詢中時引用/添加斜線。使用' - > prepare(); - > execute(array());'會完成同樣的事情。 – Sean 2014-12-13 16:24:44

+0

好的,你可以建議編輯這個PDO代碼,以便將多個值插入到數據庫中嗎?我試圖用你的建議編輯這段代碼 – amitgeek 2014-12-13 16:38:21

回答

0

我有簡化了你的代碼,因爲我假定你正在使用PDO或Msql作爲一個字符串傳遞你的值。它將所選項目連接爲數組中的字符串,並使用execute()將數組插入到數據庫中。

<?php 
if(isset($_POST['submit'])){//to run PHP script on submit 
    if(isset($_POST['which_state'])){ 
     $states = implode(",",$_POST['which_state']); 
     $paramArray = array($states); 
    } 
    $insertSQL = "INSERT INTO test1 (States) VALUES (?)"; 
    $query_insert = $db->prepare($insertSQL); 
    $result_insert = $query_insert -> execute($paramArray); 
} 
?> 
<form method="POST" action="#"> 
<select name="which_state[]" id="which_state" class="form-control" multiple="multiple" data-validation-engine="validate[required]" data-errormessage-value-missing="Please Select any one option" > 
          <option value="Colorado">Colorado</option> 
          <option value="Florida">Florida</option> 
          <option value="Illinois">Illinois</option> 
          <option value="Michigan">Michigan</option> 
          <option value="Minnesota">Minnesota</option> 
          <option value="Ohio">Ohio</option> 
          <option value="Texas">Texas</option> 
          <option value="Wisconsin">Wisconsin</option> 
</select> 
<input type="submit" name="submit" value="Submit"> 

例子查詢INSERT INTO test1 (States) VALUES (?)

示例值array(1) { [0]=> string(16) "Florida,Illinois" }

+0

這不工作編輯代碼,以便它可以輸入值我需要if(isset($ _ POST ['「form_values」')))而不是if(isset($ _ POST [ 'submit'])) – amitgeek 2014-12-15 08:52:08

+0

你在發佈的代碼中的位置是「form_values」嗎? – 2014-12-15 11:25:34

+0

檢查我的PHP文件 – amitgeek 2014-12-15 15:07:35

相關問題