1

PDOを使用してmysqlデータベースを更新するこのPHP Ajaxで助けが必要です。ユーザーがチェックボックスをオンにすると、データベースを更新したかったのです。以下は私のコードです:

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'");
}

Ok!私はすでに何が悪いのか知っています。いまいましいディレクトリパス。私は../を取り出しました、そしてそれはうまくいきます!ちょっと変だけど。

私のjsファイルはJSフォルダーにあり、products_listing.phpはjsフォルダーの外にあるためです。../products_listing.php のはずではありませんか?

なぜそれが機能しないのか、誰にでも教えてもらえますか?

よろしくお願いします!

4

1 に答える 1

0

タスクを AJAX 部分と PDO 部分の 2 つの部分に分割するだけです。

まず、PDO 部分が正常に動作することを確認してください。モック $_POST 配列を作成し、AJAX を使用せずに、このスクリプトを直接呼び出す PDO で遊んでみます。何か問題が発生した場合は、ここで質問してください。次に、動作するようになったら、同じ方法で AJAX 部分に移動します。最初に、データをサーバーに送信し、それが正しいかどうかを確認するだけで、PDO を使用しません。

2 つの問題を同時に解決すると、問題がさらに難しくなります。常にタスクを別々の部分に分割し、1 つずつ解決してください。

于 2012-12-26T05:44:04.717 に答える