У меня возникла проблема с доступом к данным из базы данных Cassandra с помощью PHP, в то время как я могу получить доступ с помощью nodejs.
Вот мой код PHP
$s = "SELECT * FROM user_project_0001 WHERE usermail='sohini.neogi#ATwitslog.com'";
$stmt = $this->dbf->prepare( $s );
if( !$stmt ) {
echo "<br/>\nPDO::errorInfo():<br/>\n";
print_r($this->dbf->errorInfo());
echo '<br/>';
}
$stmt->execute();
echo $stmt->rowCount();
/** Plusieurs projets pour cet utilisateur **/
if( $stmt->rowCount() > 1 ) {
echo '<select name="project_name" id="project_name_select">';
echo '<option value="">' . __( 'Please select', 'weenat-plugin' ) . '</option>';
while ($row = $stmt->fetch(PDO::FETCH_ASSOC) ) {
echo '<option value="' . $row['project_name'] . '" ';
if( isset( $_POST['project_name'] ) && $row['project_name'] == $_POST['project_name'] )
echo 'selected="selected"';
echo '>' . $row['project_name'] . '</option>';
}
}
Я получаю 0 записей, а если я пытаюсь получить доступ к одному и тому же запросу с помощью nodejs, я получаю 3 записи.
Вот код nodejs
client.execute("SELECT * FROM user_project_0001 WHERE usermail='sohini.neogi#ATwitslog.com'", function (err, result) {
if (!err){
if ( result.rows.length > 0 ) {
console.log("Total Records = %d", result.rows.length);
var user = result.rows[0];
console.log("name = %s", user.usermail);
console.log("pname = %s", user.project_name);
} else {
console.log("No results");
}
}});
Для PHP я использую PDO для подключения
$dsn = 'cassandra:host=xx.xxx.xx.xx;port=9160';
$this->dbf = new PDO($dsn);
$this->dbf->exec("USE senskey01");
Для nodejs это мое соединение с драйвером cassandra
var client = new cassandra.Client({contactPoints: ['xx.xxx.xx.xx'], keyspace: 'senskey01'});
Я не понимаю, почему PHP не может получить доступ к базе данных.
Я не PHP человек, но, глядя на создание экземпляров PDO, а также на запрос, я думаю, что ему не хватает пространства клавиш. Попробуйте изменить свой код на:
или полностью укажите имя таблицы в вашем запросе:
$s = "SELECT * FROM senskey01.user_project_0001 WHERE usermail='sohini.neogi#ATwitslog.com'";
Других решений пока нет …