我正在更新数据库,这是我的代码
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/