如何修复'SQLSTATE [22007]:无效的日期时间格式:1292截断了错误的DOUBLE值:'X'

时间:2019-01-18 15:54:25

标签: php sql doctrine

我目前正在建立一个网站页面(“记录”页面),该页面计算进入另一个网站页面(“网站”页面)的总人数,因此我在该网站页面上设置了一个递增的Cookie表示数据库中的数据。

我已经看到其他用户遇到此问题,因为他们在其“ SET”语句中包含了“ AND”语句。但是,我没有“ AND”语句

在我的存储库中,我有以下代码:

public function addConnections($name): int
{
    $qb = $this->createQueryBuilder('connectionCounter')
        ->update('App\Entity\site', 'connectionCounter')
        ->set('connectionCounter.nbConnections', 'connectionCounter.nbConnections + 1')
        ->where('connectionCounter.name = (:name)')
        ->setParameter('name', $name)
        ->getQuery();

    return $qb->execute();
}

在我的控制器中,我有以下代码:

if($repository)
{
    $query = $this->getDoctrine()
                  ->getRepository(Activity::class)
                  ->findActivities($repository[0]->getIdSite());

    $cookieCreator = 0;
    if (!isset($_COOKIE['Connection'])) {
        setcookie("Connection","1",time()+60*60*24*100);

        $connections = $this->getDoctrine()
                            ->getRepository(Site::class)
                            ->addConnections($repository[0]->getIdSite());
}

我希望数据库得到更新,当我进入记录页面时,我看到访问量增加了。

这实际上是什么:

An exception occurred while executing 'UPDATE site SET nb_connections = nb_connections + 1 WHERE name = (?)' with params [2]:

SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect DOUBLE value: 'X '

即使解释为什么会发生这种情况也很好!

1 个答案:

答案 0 :(得分:0)

在我的控制器中,我有轻微的疏忽:

->addConnections($repository[0]->getIdSite());

应该在什么时候出现:

->addConnections($repository[0]->getName());

我更改了它,现在可以使用了。抱歉!