PDO返回数组('value1','value2')

时间:2013-01-24 03:59:25

标签: php mysql arrays pdo

我使用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时,它会返回一个数组(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;

3 个答案:

答案 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');

答案 1 :(得分:0)

我假设indexcreateupdate是列值,您希望它们位于" plain"阵列。默认设置是将结果存储为整数和列名称键。您希望将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

答案 2 :(得分:0)

首先,我假设您只有一个列访问权限 在该列中,您已经保存了三行索引,创建,更新。当您搜索用户$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);