如何使用 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 获取价值?的主要内容,如果未能解决你的问题,请参考以下文章