1

我需要在这个 PHP Ajax 使用 PDO 更新 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 吗?

谁能告诉我为什么它不能正常工作?

提前谢谢各位!

4

1 回答 1

0

只需将您的任务分成两部分:AJAX 部分和 PDO 部分。

首先确保您的 PDO 部件运行良好。制作一个模拟 $_POST 数组,然后开始使用 PDO 直接调用此脚本,无需 AJAX。如果出现问题,请在此处提问。然后,当你让它工作时,以同样的方式移动到 AJAX 部分——首先,没有 PDO,只需将数据发送到服务器并验证它是否正确。

一次解决两个问题会使事情变得更加困难。始终将您的任务分成不同的部分并一一解决。

于 2012-12-26T05:44:04.717 回答