0

私はajaxを使用してphpファイルを呼び出してSQLクエリを実行します。ユーザーがボタンを押すと、phpファイルは1つの選択と2つの挿入を含むいくつかのクエリを実行します。ユーザーが初めてボタンを押したときに正常に動作します。2回目は、選択クエリと最初の挿入クエリのみが機能し、2番目の挿入クエリは何も挿入しません。クエリを確認しましたが、すべて問題ありません。何らかの理由で、2番目の挿入クエリが実行されていないようです。

$itemquery = "insert into `Items` values (...)";
if($affected_rows = $db->exec($itemquery) ){
    ...
    $pickupquery = "insert into `Pickup` values (...)";
    if ($affected_rows2 = $db->exec($pickupquery)) {
        echo "success";
    }
    else echo "No pickup is inserted";
}

初めてボタンを押すと、両方のクエリが正常に機能します(「成功」を出力します)。アイテムがテーブルに挿入されます。しかし、2回目に押すと、$ itemqueryのみが機能し、$ pickupqueryは何も挿入しません(「ピックアップが挿入されていません」と出力されます)。$ pickupquery自体には問題はありませんが、最初のプレス後になぜ機能しないのかわかりません。

何か案は?

4

4 に答える 4

0

SQL構文が正しくありません。そのはず

INSERT INTO `Items` (COL_NAMES) VALUES (a, b,...)

例えば

INSERT INTO `Items` (`name`, `price`) VALUES ('Beans', 0.40);
于 2012-12-27T01:42:31.557 に答える
0

次のようにSQLに挿入することもできます(これが良いか悪いかはわかりませんが、簡単です)。

INSERT INTO `Items` SET name='Beans', price='0.40'
于 2012-12-27T01:45:25.380 に答える
0

これに答えるのに十分な情報がないと思います。これはjavascriptの問題である可能性があり、2回目の挿入または同じ値の挿入を妨げるデータベース上の一意のインデックスである可能性があります。

デバッグを開始するには、Firebugを使用する必要があります。Firebugを使用する場合は、Ajaxで呼び出されるリンクをコピーして、ブラウザーから直接アクセスしてみてください。その後、ページを更新してエラーが発生するかどうかを確認します。これは、Ajaxでボタンを2回押すことをシミュレートする必要があります。

ajax呼び出しが正しいページを呼び出していること、および2回(ボタンを押すたびに1回)呼び出されていることをdifebugで確認します。

次に、そのホストに対して定義されたエラーファイルにエラーがあるかどうかを確認します。

于 2012-12-27T02:02:47.807 に答える
0

データベースで属性をuniqueに設定したのはばかげた間違いで、重複した値を挿入しようとしたため、問題が発生しました。コードに問題はありませんでした。

于 2013-05-22T00:31:00.413 に答える