如何使用 Cassandra PDO 获取价值?

Posted

技术标签:

【中文标题】如何使用 Cassandra PDO 获取价值?【英文标题】:How to fetch value with Cassandra PDO? 【发布时间】:2014-09-05 21:35:08 【问题描述】:

我正在为使用 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 是使用 email 列作为主键创建的。我在我的应用程序中向用户表插入和更新信息没有问题,但仍然无法弄清楚如何成功获取单个值。同样,当我使用某些查询 fetchAll() 时,我可以将数组(行)打印到屏幕上,但不能索引它们以获取特定值。也许我缺少一些关于 cassandra 的细节?

【问题讨论】:

【参考方案1】:

执行以下操作:

    检查每个方法的返回值。 执行语句后检查是否有错误。 检查 php 解释器的错误日志。
$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));

【讨论】:

【参考方案2】:

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

在未来,我计划加快速度。

也许是it will help you。类似于 PDO 的语法。

【讨论】:

以上是关于如何使用 Cassandra PDO 获取价值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Cassandra 中使用 spark 获取行范围

使用 PDO 时如何获取原始表/列名?

如何使用 PDO 在 PHP 中获取结果数组?

如何使用 PDO 在 PHP 中获取结果数组?

如何使用PDO在PHP中获取结果数组?

谁说不火-价值百亿Cassandra背后的力量