如何从用户中选择*,其中键IN(<;$array>;);使用PHP和Cassandra PDO(cql3)


How to select * from users where key IN (<$array>); with PHP and Cassandra-PDO (cql3)?

我正在使用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);

有人知道卡桑德拉pdo有没有问题,或者我错在哪里了?

我按cqlsh>提示试了同一句话,效果很好。

提前感谢您的帮助。

现在您只从结果集中提取一行,要提取所有行,您应该发出$stmt->fetchAll ()而不是$stmt->fetch()

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

您还可以查看PDO文档中的fetch和fetchAll。

当前,您只从结果集中获取一行。您需要在循环中运行该获取,以便从结果集中获取所有结果。

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