2012-12-26 55 views
1

我需要幫助,在這個PHP Ajax使用PDO更新mysql數據庫。如果用戶選中複選框,我想更新數據庫。下面是我的代碼:PDO Ajax更新mysql數據庫

JS:

$('input[name=product_new]').click(function(){ 

    var chkbox_id = $(this).attr('alt'); 
    var chkbox_selected = $(this).is(':checked'); 

    if(chkbox_selected == true) 
    { 
     chkbox_selected = "checked"; 
    } 
    else 
    { 
     chkbox_selected = "uncheck"; 
    } 


    $.post({ 
      url: "../products_listing.php", 
      type: "POST", 
      data: {product_id: chkbox_id, product_new: chkbox_selected}, 
      cache: false, 
      success: function(){} 

      }); 

}); 

與PDO PHP頁面來更新數據庫:

$id = $_POST['product_id']; 
$product_new = $_POST['product_new']; 
if(isset($_POST['product_new'])) 
{ 
    try 
    { 
     $query = "UPDATE productinfo SET new_arrival=? WHERE id=?"; 
     $stmt_new_chkbox = $conn->prepare($query); 
     $stmt_new_chkbox->bindParam(1, $product_new, PDO::PARAM_STR); 
     $stmt_new_chkbox->bindParam(2, $id, PDO::PARAM_INT); 
     $stmt_new_chkbox->execute(); 
    } 
    catch(PDOException $e) 
    { 
     echo 'ERROR: ' . $e->getMessage(); 
    } 
} 

這是工作,當我使用mysql但現在我已經改變了它使用PDO ,它將不再工作。我找不到哪裏出了問題。先謝謝你們。

下面是舊代碼mysql_:

$id = mysql_real_escape_string($_POST['product_id']); 
$product_new = mysql_real_escape_string($_POST['product_new']); 
if(isset($_POST['product_new'])) 
{ 
    $upt_new=mysql_query("update products_list set new_arrival='$product_new' where id='$id'"); 
} 

好!我知道什麼是錯的了。該死的目錄路徑。我拿出了../,它的工作原理!有點奇怪,但。

因爲我的js文件位於JS文件夾中,而products_listing.php位於js文件夾之外。它不應該是../products_listing.php嗎?

任何人都可以告訴我爲什麼它不工作,它應該是什麼?

在此先感謝你們!

+1

「它不會工作了」是*不是*錯誤信息,也不是問題描述。 – PeeHaa

+0

呃。我知道,當我檢查複選框時,它不會更新數據庫,我找不到任何錯字或甚至任何錯誤消息。我不知道哪裏出了問題。 – Dr3am3rz

+0

嘗試調試它。在PHP側記錄一些數據,並在'success'回調函數的javascript端提醒'alert'。或者直接使用這些參數調用PHP並回傳數據,以查找其中斷的位置。 –

回答

0

只需將您的任務分爲2個部分:AJAX部分和PDO部分。

首先確保您的PDO部分正常工作。製作一個模擬的$ _POST數組,然後開始使用PDO直接調用該腳本,而不使用AJAX。如果出現問題,請在這裏提問。然後,當您將它恢復工作時,以同樣的方式移動到AJAX部分 - 首先,無需PDO,只需將數據發送到服務器並驗證它是否正確。

一次解決2個問題使事情變得更加困難。始終將您的任務分成不同的部分並逐一解決。

+0

嗨,好的,會嘗試。謝謝。 – Dr3am3rz

+0

試過了,它確實證明isset($ _ POST ['product_new'])不起作用。我不知道爲什麼,但它以前工作,並沒有錯過任何舊代碼。 – Dr3am3rz