-1

我使用一个 select sql 语句 PDO fetchData,

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

在数据库中,结果如下所示:

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

 + create

 - update

我会将它存储在变量 $result 中

我怎样才能将 $result 格式设置为这样的数组?

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

另一个问题,

我在我的函数中使用了代码:但是当我 var_dump 时,它会返回一个 array(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;
4

3 回答 3

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');
于 2013-01-24T04:05:39.987 回答
0

我假设index,createupdate是列值,并且您希望它们在“普通”数组中。默认值是将结果存储为整数和列名键。您想将 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

于 2013-01-24T04:03:41.180 回答
0

首先,我假设您只有一列 Accesspage,并且在该列中您已经保存了三行索引、创建、更新。当您搜索用户的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);

现在这个 $result 是一个关联数组,键为“ AccessPage

如果你想制作一个数组,那么你应该像这样尝试

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

print_r($yourarrayname);
于 2013-01-24T04:22:05.147 回答