2012-12-26 58 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