2014-07-15 45 views
0

我对使用Apache Cassandra的应用程序使用PHP PDO驱动程序,但无法获取我需要的信息。有什么明显的错误?如何使用Cassandra 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', '[email protected]', PDO::PARAM_STR); 
$st->execute(); 
print_r($st->fetch(PDO::FETCH_ASSOC)); 

什么都不打印到窗口。表用户是使用电子邮件列作为主键创建的。我没有遇到过在我的应用程序中向用户表插入和更新信息的麻烦,但仍然无法弄清楚如何成功获取单个值。同样,当我使用某些查询的fetchAll()时,我可以将数组(行)打印到屏幕上,但不能将它们编入索引以获取特定值。也许有关于我失踪的cassandra的一些细节?

回答

0

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

未来,我计划加快速度。

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

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', '[email protected]', 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));