2017-08-24 2 views
0

Cassandra \ Exception \ InvalidArgumentException: Aucune valeur ou d'une colonne pour le nomDataStax PHP Cassandra, obtenir « Non Valeur ou colonne pour le nom » erreur

Je suis en train de mettre à jour certains vieux code de YACassandraPDO à nouveau PHP DataStax extension, et je suis confronté à des problèmes. Notamment, cette erreur. Je ne peux pas comprendre pourquoi ou ce qui ne va pas.

Un numéro de paramètre correspond. Existe-t-il quelque chose de radicalement différent que Datastax fait pour les déclarations préparées?

$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"; 

Le tableau est:

$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 
    ]; 

Exécution:

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

Répondre

0

D'accord, je l'ai découvert la question: les Colens. ': key' doit être juste 'clé'.

Homme, ça a pris juste trop de temps à voir. Tous mes anciens noms de liaison étaient $stmnt->bindValue(':company', [...]);; donc, il a complètement échappé à ma vue.