PHP mysql查询正在执行两次

时间:2012-01-26 13:26:15

标签: php mysql pdo prepared-statement

我有这个PHP脚本:

$q = $dbc -> prepare("
    UPDATE accounts 
    SET motivation = motivation-10 
    WHERE id = ?
");

$q -> execute(array($user['id']));

但它减去了20而不是10。当我在mysql中运行查询时,它只减去十。为什么呢?

3 个答案:

答案 0 :(得分:0)

你的$ q - > execute方法正在做些傻事!检查或

可能是循环或

您有多个请求!

答案 1 :(得分:0)

你准备好的陈述看起来很好。它应该从动力栏中的当前值中扣除10。

如果扣除20,你最有可能两次打电话。

确保您只拨打execute()一次,如果您是从网页上调用此邮件,请确保您没有再次点击它。

答案 2 :(得分:0)

当您在同一页面中编写PHP代码和html代码时出现问题。如果您是第一次单击提交按钮插入,那么页面将再次刷新..是吗?然后再次执行代码..修复是你想在执行语句之前检查条件,表单给我们提供数据。

if($_POST['txtlocation']!='')
{
$sql = "INSERT INTO location(description) VALUES (:location)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':location', $_POST['txtlocation'], PDO::PARAM_STR); 
$stmt->execute();
}