我正在更新数据库,这是我的代码

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,它在执行该行后将不会显示,页面将变为空白。execute语句中发生了一些事情。$s->execute()它不允许我的代码继续。知道吗?我是不是用错了PDO类。它没有达到“catch”语句。任何帮助都很好。最终的结果是,页面返回到更新后的余额开始的位置。

最佳答案

您只将一个值绑定到余额,而不是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);来启用它。

关于php - 使用PDO类的PHP和MySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13150967/

10-10 10:33