2013-01-24 211 views
-1

我是個選擇SQL語句PDO fetchData,PDO返回陣列( '值1', '值')使用

$user = 'admin'; 
sql = 'SELECT AccessPage FROM accessrights where UserName = '$user''; 

在數據庫中的結果是這樣的:

----------- 
Access Page 
----------- 
- index 

+ create 

- update 

我會的將其存儲在變量中$ result

如何才能將$ result格式化爲一個這樣的數組?

$result = array('index','create','update'); 

另一個問題,

我用於我的功能的代碼:但是當我的var_dump,它retun一個陣列(0){}的值。

這裏是我的功能:

$user = CHtml::encode(Yii::app()->user->name); 

    $connectionString[0] = Yii::app()->params['dbhandler2']; 
    $dbhandler3 = new DBHandler($connectionString[0]); 
    $dbhandler3->open(); 

    $dbhandler3->prepare("SELECT AccessPage FROM accessrights where UserName ='$user'"); 
    $dbhandler3->execute(); 
    $this->result2 = $dbhandler3->fetchAllData(); 
    $dbhandler3->close(); 

    $yourarrayname = array(); 
    while ($row = $dbhandler3->fetchAllData()) { 
     $yourarrayname[] = $row['AccessPage']; 
    } 

    $this->access = $yourarrayname; 
+0

你應該使用預處理語句。 –

回答

2

使用下面的代碼

$user = 'admin'; 
$sql = "SELECT AccessPage FROM accessrights where UserName = '$user'"; 
$sth = $dbh->prepare($sql); 
$sth->execute(); 

/* Fetch all of the values of the first column */ 
$result = $sth->fetchAll(PDO::FETCH_COLUMN, 0); 
print_r($result); // the $result will be array array('index','create','update'); 
+0

WOw我使用了這段代碼,它工作正常謝謝 – JeAr

0

我假設indexcreate,並且update是列值,並且希望他們在一個「普通」陣列。默認值是將結果存儲爲整數和列名密鑰。您希望將fetchmode設置爲整數鍵:$stmt->setFetchMode(PDO::FETCH_NUM)$stmt->fetch(PDO::FETCH_NUM)http://php.net/manual/en/pdostatement.setfetchmode.php http://php.net/manual/en/pdostatement.fetch.php

0

首先我假設你只有一個列Accesspage 並且在中列已經保存了三行索引,創建,更新。當您搜索訪問頁面值爲用戶$user。這將返回分配給$ user的值。

$user = 'admin'; 
$sql = 'SELECT AccessPage FROM accessrights where UserName = '$user''; 
$sth = $dbh->prepare($sql); 
$sth->execute(); 
$result = $sth->fetch(PDO::FETCH_ASSOC); 
print_r($result); 

現在這個$結果是一個關聯數組鍵「AccessPage

如果你想使一個數組,那麼你應該嘗試這樣

$yourarrayname=array(); 
while ($row = $sth->fetch(PDO::FETCH_ASSOC)) 
{ 
$yourarrayname[]= $row['AccessPage'] ; 
} 

print_r($yourarrayname); 
+0

始終接受答案,以獲得來自stackoverflowers的巨大幫助! –

+0

哦,我嘗試了你上次給我的代碼,但它只返回一個空數組,我在頂部編輯了我的代碼 – JeAr