php
  • pdo
  • cassandra
  • cql3
  • 2013-08-19 29 views 0 likes 
    0

    我使用https://github.com/Orange-OpenSource/YACassandraPDO作为PDO扩展,所有工作正常,但是当我试图通过条款select * from users Where key IN ($my_keys_array)获取记录时,只是检索第一条记录。

    $query = "SELECT * FROM questions WHERE user_id = 'mikko' AND question_id IN ('Question 1','Quesiton 2')"; 
    $stmt = $this->db->prepare($query); 
    $stmt->execute(); 
    $res = $stmt->fetch(PDO::FETCH_ASSOC); 
    echo json_encode($res); 
    

    有人知道cassandra-pdo是否存在问题,或者我错了?

    我用cqlsh>提示符来尝试相同的句子,并且工作正常。

    在此先感谢您的帮助。

    +0

    如果'$ my_keys_array' _is_是一个PHP数组,您需要将它变成SQL可以理解的东西。试试:'“'”。 implode(“','”,$ my_keys_array)。 “'”'代替。这将做的是加入阵列中的元素,如:“一”,“二”,“三”,这应该基本上工作。所以你的查询将是:'“SELECT * FROM users WHERE key IN(''。implode('','”,$ my_keys_array)。'')“' – ninty9notout

    +0

    我试过了,即使我尝试发送”SELECT * FROM问题WHERE user_id ='mikko'AND question_id IN('Question 1','Question 2')“但不起作用... – jezuz

    回答

    1

    目前,您只从结果集中获取单行,要获取所有行,您应该发出$stmt->fetchAll()而不是$stmt->fetch()

    Btw。一个很好的地方看看,如何使用API​​总是测试:这些可以给出相当多的信息https://github.com/Orange-OpenSource/YACassandraPDO/tree/master/tests

    您还可以查看fetchfetchAll的PDO文档。

    +0

    尽管这确实有效,但这并没有解释为什么他当前的代码没有。你应该详细解释这个答案。 –

    +0

    大声笑!你是非常正确的...非常感谢! – jezuz

    +0

    我不知道这个区别,非常感谢! – jezuz

    1

    目前,您只是从结果集中获取单个行。您需要在循环中运行该提取以获取结果集中的所有结果。

    $result_array = array(); 
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
        $result_array[] = $row; 
    } 
    echo json_encode($result_array); 
    
    +0

    太棒了,你很棒! – jezuz

    +0

    谢谢大家... – jezuz

    相关问题