2013-01-24 183 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