【问题标题】:Datastax PHP Cassandra, getting "No Value or Column for name" errorDatastax PHP Cassandra,出现“名称没有值或列”错误
【发布时间】:2018-02-02 21:03:42
【问题描述】:

Cassandra\Exception\InvalidArgumentException:名称没有值或列

我正在尝试将 YACassandraPDO 中的一些旧代码更新为 Datastax 的新 PHP 扩展,但遇到了一些问题。值得注意的是,这个错误。我不知道为什么或出了什么问题。

参数编号匹配。 Datastax 是否对准备好的语句做了一些截然不同的事情?

$query  = "UPDATE {$this->keyspace}.visit  USING TTL {$this->ttl}
                SET ip=:ip, browser=:browser, referrer=:ref, terms=:terms
                 ,  url=:url, stime=:stime, etime=:etime
                 , company=:company, isp=:isp, domain=:domain, client_type = :client_type
                 , city=:city, state=:state_cd, postal_cd=:postal, country=:country
                 , country_cd=:country_cd, latitude=:lat, longitude=:long, area_cd=:area_cd
                 , user_id=:user_id
                WHERE visit_dt=:dt AND cid=:cid AND sid=:sid AND pvid=:pvid";

数组是:

    $params = [
        ':dt'          => new Timestamp(strtotime(date('Y-m-d')), 0),
        ':cid'         => $data['customerId'],
        ':sid'         => $data['sid'],
        ':pvid'        => $data['pvid'],
        // Columns
        ':ip'          => $ip,
        ':browser'     => utf8_encode($data['browser']),
        ':client_type' => utf8_encode($device),
        ':ref'         => utf8_encode($data['referrer']),
        ':terms'       => utf8_encode($terms),
        ':url'         => utf8_encode($data['url']),
        ':stime'       => $data['now'],
        ':etime'       => $data['etime'],
        ':user_id'     => $data['userid'],
        // Geodecode information
        ':company'     => utf8_encode($geo->isp),
        ':domain'      => utf8_encode($geo->domainName),
        ':isp'         => utf8_encode($geo->isp),
        ':city'        => utf8_encode($geo->cityName),
        ':state_cd'    => utf8_encode($geo->regionName),
        ':country'     => utf8_encode($geo->countryName),
        ':country_cd'  => utf8_encode($geo->countryCode),
        ':postal'      => $geo->zipCode,
        ':lat'         => floatval($geo->latitude),
        ':long'        => floatval($geo->longitude),
        ':area_cd'     => $areac
    ];

执行:

        $prep = $this->adapter()->prepare($stmnt);
        $return = $this->adapter()->execute($prep, ['arguments' => $params]);

【问题讨论】:

    标签: php cassandra datastax cql


    【解决方案1】:

    好的,我发现了问题:colens。 ':key' 必须只是 'key'。

    伙计,这花了太长时间才看到。我所有的旧绑定名称都是$stmnt->bindValue(':company', [...]);;所以,它完全脱离了我的视线。

    【讨论】:

      猜你喜欢
      • 2014-09-29
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      • 2014-12-08
      • 2015-01-25
      • 2016-06-28
      • 2016-01-19
      • 2020-11-08
      相关资源
      最近更新 更多