[英]Querying Cassandra through php
我正在嘗試通過PHP腳本從Cassandra數據庫執行SELECT查詢。
連接成功通過php。 這是查詢:
$session = $cluster->connect($keyspace);
$result = $session->execute("SELECT * FROM twitter.tweets_by_author WHERE author= 'John Doe'")
問題1
我將通過HTML表單獲取作者姓名,讓變量為author_name 。 如何在WHERE子句中傳遞author_name ?
我努力了:
$result = $session->execute("SELECT * FROM twitter.tweets_by_author WHERE author= \%s\",author_name);
但這是行不通的,這很可能是由於WHERE子句中=之后的值必須以單個反斜杠''
開頭,以使其成為有效的cassandra查詢。
此外,我想打印結果,如下所示:
printf(" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \n ", $row['tid'],$row['tweet_text'], $row['author_id'], $row['location'], $row['lang']);
問題2
由於HTML將合並額外的空格,我如何根據自己的意願打印空格?
僅回答Q1(我不是HTML專家)。 您最好使用文檔中介紹的所謂的預備查詢。 像這樣:
$prepared = $session->prepare(""SELECT * FROM twitter.tweets_by_author WHERE author= ?")
$result = $session->execute($prepared,
array('arguments' => array('author' => author_name)))
准備好的查詢的優點之一是,它們在服務器上解析一次,然后客戶端僅發送占位符( ?
標記)的數據,而不發送完整查詢。 這極大地提高了性能。 但是您需要將准備好的查詢存儲在某個地方,因此它將被多個請求重用-它需要服務器之間的額外往返。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.