2010-11-08 24 views
0
$result = mysql_query("UPDATE orders SET order_id='".$data['order_id']."',project_ref='".$data['project_ref']."',supp_short_code='".$data['supp_short_code']."',om_part_no='".$data['om_part_no']."',description='".$data['description']."',quantity='".$data['quantity_input']."',cost_of_items='".$data['cost_of_items']."',cost_total='".$data['cost_total_td']."' WHERE order_id = '".$data['order_id']."'") or die(mysql_error()); 

奇怪的是它集所有字段爲「2」(即ORDER_ID值),我想要創建一個「編輯訂單」頁面,但它不會去計劃!?嵌入式彥博PHP的MySQL update語句

編輯:

我如何將數據發送到PHP:

$('#submit').live('click',function(){ 

         var postData = {}; 
         postData['data[order_id]'] = $('#order_id').text(); 
         $('#items tr').not(':first').each(function(index, value) { 
          var keyPrefix = 'data[' + index + ']'; 
          postData[keyPrefix + '[supp_short_code]'] = $(this).closest('tr').find('.supp_short_code').text(); 
          postData[keyPrefix + '[project_ref]'] = $(this).closest('tr').find('.project_ref').text(); 
          postData[keyPrefix + '[om_part_no]'] = $(this).closest('tr').find('.om_part_no').text(); 
          postData[keyPrefix + '[description]'] = $(this).closest('tr').find('.description').text(); 
          postData[keyPrefix + '[quantity_input]'] = $(this).closest('tr').find('.quantity_input').val(); 
          postData[keyPrefix + '[cost_of_items]'] = $(this).closest('tr').find('.cost_of_items').text(); 
          postData[keyPrefix + '[cost_total_td]'] = $(this).closest('tr').find('.cost_total_td').text(); 
         }); 

        $.ajax 
         ({ 
         type: "POST", 
         url: "updateorder.php", 
         dataType: "json", 
         data: postData, 
         cache: false, 
         success: function() 
          { 
           alert("Order Updated"); 
          } 
         }); 
       }); 

完整的PHP代碼:

if (isset($_POST['data']) && is_array($_POST['data'])) { 
        foreach ($_POST['data'] as $row => $data) { 
         $result = mysql_query("UPDATE orders SET project_ref='".$data['project_ref']."',supp_short_code='".$data['supp_short_code']."',om_part_no='".$data['om_part_no']."',description='".$data['description']."',quantity='".$data['quantity_input']."',cost_of_items='".$data['cost_of_items']."',cost_total='".$data['cost_total_td']."' WHERE order_id = '".$data['order_id']."'") or die(mysql_error()); 
        } 
       } 
       var_dump($data); 
+0

1 /我不明白什麼你的問題,2 /有一個谷歌,看看「SQL注入PHP的MySQL」,你會學習如何不會失去你的工作/實習/項目。並且我認爲問題在於當你構建你的$ data數組時,你的請求(除了大的安全漏洞)似乎沒有錯。 – 2010-11-08 14:54:14

+3

你好小寶貝:) – RobertPitt 2010-11-08 14:54:34

+1

'var_dump($ data)'顯示什麼? – Quassnoi 2010-11-08 14:54:58

回答

0
  1. 這是不安全的。您應該使用mysql_real_escape_string
  2. 將任何發送給MySQL的值轉義出來。數據的外觀如何?你確定$data包含正確的值嗎?
  3. 生成的查詢在發送到MySQL之前是什麼樣子的?
  4. 沒有必要更新order_id(感謝,Fosco)
+0

4.不要更新order_id,這沒有任何意義。 – Fosco 2010-11-08 14:59:34