【问题标题】:How to fetch value with Cassandra PDO?如何使用 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 的细节?

【问题讨论】:

    标签: php pdo cassandra cql3


    【解决方案1】:

    执行以下操作:

    1. 检查每个方法的返回值。
    2. 执行语句后检查是否有错误。
    3. 检查 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 的语法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-23
        • 1970-01-01
        • 2015-04-09
        • 2019-04-08
        • 1970-01-01
        • 2020-08-30
        相关资源
        最近更新 更多