通过使用pdo添加+1来更新行

时间:2015-12-01 16:36:46

标签: php mysql pdo

我正在尝试在表格中添加+1并使用以下代码

 try {
$query = $con->prepare( "UPDATE sitename SET hits = hits + 1
             WHERE sitename = ?" );
$query->bindValue( 1, $url );
$query->execute();
// show error

} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

我认为该表是针对字段匹配设置的,类型为int(11)

正如你所看到的,我正在努力学习,我也在这里阅读了几个问题,给出了同样问题的类似答案,但调整了代码工作....在这种情况下不工作

在上面的代码中我绑定了值sitename,我是否需要对匹配执行相同的操作?

以下代码根本不对该行执行任何操作,

关于stackoverflow的以下问题有一个非常详细的错误,这就是我得到这个代码的基础,就像我说我在发布之前做了一些搜索我只是觉得我失踪了某事或完全不理解问题。

此代码也不会回显错误。

1 个答案:

答案 0 :(得分:1)

两个问题,两个答案。

首先,正如@Fred指出的那样,删除hits = hits + 1之后的逗号,UPDATE语句就可以了。

其次,

  

在上面的代码中我绑定了值sitename,我是否需要对匹配执行相同的操作?

没有。您使用绑定变量在SQL代码和客户端代码之间传递数据(在本例中为您的PHP代码。)更新hits的值完全在SQL中处理,不会传入或传出。

使用PDO,您还可以使用命名的绑定变量,如下所示:

$query = $con->prepare( "UPDATE sitename SET hits = hits + 1
                           WHERE sitename = :url" );

然后

$query->bindParam(':url', $url);
$query->execute();

或只是

$query->execute(array(':url' => $url));

上面的代码没有错误处理,因为这不是我试图解决的问题。错误处理很重要,但在这种情况下,我将其留作读者练习。