如何使用Cassandra PDO获取价值?

时间:2014-07-15 15:39:22

标签: php pdo cassandra cql3

我正在为使用Apache Cassandra的应用程序使用PHP PDO驱动程序,但我无法获取所需的信息。有什么明显错的吗?

$db = new PDO('cassandra:host=localhost;port=9160');
$db->exec("USE project");
$st = $db->prepare("SELECT fname FROM users WHERE email=:em;");
$st->bindValue(':em', 'email1@gmail.com', PDO::PARAM_STR);
$st->execute();
print_r($st->fetch(PDO::FETCH_ASSOC));

窗口上没有任何内容。使用电子邮件列作为主键创建表用户。我在应用程序中向users表插入和更新信息时没有遇到任何问题,但仍无法弄清楚如何成功获取单个值。类似地,当我使用一些查询fetchAll()时,我可以将数组(行)打印到屏幕但不能索引它们以获取特定值。也许有一些我失踪的cassandra的细节?

2 个答案:

答案 0 :(得分:1)

执行以下操作:

  1. 检查每种方法的返回值。
  2. 执行语句后检查是否有错误。
  3. 检查php解释器的错误日志。
  4. $db = new PDO('cassandra:host=localhost;port=9160');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); 
    $db->exec("USE project");
    $st = $db->prepare("SELECT fname FROM users WHERE email=:em;");
    
    if ($st == false) {
        print_r($db->errorInfo())
        exit;
    }
    
    if ($st->bindValue(':em', 'email1@gmail.com', PDO::PARAM_STR) == false) {
        print_r($db->errorInfo())
        exit;
    }
    
    if ($st->execute() == false) {
        print_r($db->errorInfo())
        exit;
    }
    
    print_r($st->fetch(PDO::FETCH_ASSOC));
    

答案 1 :(得分:0)

我有类似的问题。我用了YACassandraPDO。不幸的是,当它与php 5.4一起使用时,我得到错误502.决定编写他或她的库,允许使用Cassandra二进制协议而不会遇到类似的问题。

将来,我打算加快速度。

也许it will help you。语法如PDO。