1

次のコードでテーブルを更新したいのですが、更新に失敗しました。

 $sql_edit = "UPDATE subscription SET name=?,email=? WHERE name=? & email=?";
        $q_edit = $pdo->prepare($sql_edit);
        $q_edit->execute(array($_POST['new_name'],$_POST['new_email'],$_POST['old_name'],$_POST['old_email']));
4

2 に答える 2

0

$_POST 変数の 1 つが設定されていないことが原因であると思われます。以下のコードは、post 変数が設定されていることを確認し、設定されていない場合は値を に設定しますnull使用したアンパサンドを変更しました。 ANDにする必要があります。

$sql_edit = "UPDATE subscription SET name=?,email=? WHERE name=? AND email=?";
        $q_edit = $pdo->prepare($sql_edit);
        $do_update = $q_edit->execute(array(
            (isset($_POST['new_name']) ? $_POST['new_name'] : null),
            (isset($_POST['new_email']) ? $_POST['new_email'] : null),
            (isset($_POST['old_name']) ? $_POST['old_name'] : null),
            (isset($_POST['old_email']) ? $_POST['old_email'] : null)
        ));

// Also check that it was executes successfully in your code
if (!$do_update)
{
echo "Failed to update";
}
else
{
echo "Update successful";
}

ただし、値をそのように配列に入れるのではなく、投稿する前に値を確認することをお勧めします。

もう 1 つ確認すべきことは、接続が暗黙的なトランザクションに設定されていないことです。それ以外の場合は、変更をデータベースにコミットする (またはロールバックする) 必要があります。

$pdo->rollBack();

$pdo->commit();

これは、列が null 値を許可するように設定されている場合にのみ機能します。

于 2013-10-15T09:50:18.080 に答える