1

データベースを更新しようとしています。これが私のコードです

if (isset($_GET['placeorder']))
{
    include 'includes/db.php';

    try
    {
    $newBalance = $_POST['balance'] + $_POST['oldbalance'];
    $sql = 'UPDATE customer SET
            balance = :balance
            WHERE id = :id';
    $s = $pdo->prepare($sql);
    $s->bindValue(':balance', $newBalance);
    $s->execute();
    }
    catch (PDOException $e)
    {
        $error = 'Could not add the new balance for the customer' . $e->getMessage();
        include  'result.php';
        exit(); 

    }
    header('Location: .');
    exit();

私がやろうとしているのは、送信されたフォームから来ている顧客の残高を更新することです。$s->execute();値をエコーし​​ようとすると、コード内の値をどこまでも取得でき$newBalanceます。つまり、その行が実行された後は表示されず、ページが空白になります。実行ステートメントで何かが起こっています。$s->execute()私のコードの進行を許可しないこと。何か案が?PDO クラスを間違った方法で使用していますか? 「キャッチ」ステートメントに達していません。どんな助けでも素晴らしいでしょう。最終的な結果として、ページは更新されたバランスで開始した場所に戻ります。

4

2 に答える 2

1

IDではなく、値を天びんにバインドするだけです。次のような行が必要です。

$s->bindValue(':id', $id);

$_POST['balance']クエリで使用する前に、と$_POST['oldbalance']が設定されていることを確認することをお勧めします。

$balance = isset($_POST['balance'])? $_POST['balance'] : 0;
$oldbalance = isset($_POST['oldbalance'])? $_POST['oldbalance'] : 0;
$newbalance = $balance + $oldbalance;

エラーが発生していない場合は、エラーレポートが表示されていない可能性がありerror_reporting(E_ALL);ます。ページの上部に追加することで、エラーレポートを有効にできます。

于 2012-10-31T03:47:27.070 に答える
0

var_dump()両方の変数$_POST['balance']$_POST['oldbalance']。私は彼らがとして来ると確信していstringます。型キャストは解決策の1つです。この場合、型キャストを試して、int/floatで加算を実行してください。

$newBalance = (int)$_POST['balance'] + (int)$_POST['oldbalance'];
于 2012-10-31T03:46:24.687 に答える