如何从pdo语句中显示数组的所有值?

时间:2017-08-31 18:29:34

标签: php html mysql arrays pdo

我试图将单个值从PDO语句显示到单选按钮。 这是我到目前为止所拥有的。

    <?php

    session_start();  
    $host = "localhost";  
    $username = "root";  
    $password = "";  
    $database = "training";  
    $result = "";

        $connect = new PDO("mysql:host=$host; dbname=$database", $username, $password);  

            $query = "SELECT username FROM accounts";  
            $statement = $connect->prepare($query);
            $statement->execute();
            $result = $statement->fetchAll(PDO::FETCH_ASSOC);  

    echo "<input type='radio' name ='president'>". $result . "</input>"

    ?>

但它导致了这个

  

&#34;注意:数组转换为字符串   C:\xampp\htdocs\testing\vote.php&#34;

我已尝试使用print_r($result);检查值

[0] = admin
[1] = operation1

我希望这些值显示在单选按钮文本上。

2 个答案:

答案 0 :(得分:0)

因此,您已经获取了所有值,并且值存储在数组(数据列表)中。您目前正在尝试打印该列表,但PHP并不支持使用简单的回显。您将必须循环此阵列并将其打印出来。

foreach($result as $item) {
    echo "<input type='radio' name ='president'>". $item. "</input>"
}

$ result =列表变量,取了你已经拥有的名字。这个循环每次都采用列表中的下一个值并将其放入变量$ item中,因此它不再是列表而是单个值。

修改

我的初始答案只有在fetchAll方法调用根据评论中不要惊慌失措的答案而改变时才会有效,并将其更改为

fetchAll(PDO::FETCH_COLUMN)

答案 1 :(得分:0)

您正在收到通知,因为您正在尝试使用echo打印数组 - 而不是数组元素。

您正在使用fetchAll()。因此,$result数组是一个二维数组。像这样:

Array
(
    [0] => Array
        (
            [username] => John
        )

    [1] => Array
        (
            [username] => Mikaela
        )

    [2] => Array
        (
            [username] => Angela
        )
)

以下是它应该如何:

// Fetch the values.
$query = "SELECT username FROM accounts";  
//...
$result = $statement->fetchAll(PDO::FETCH_ASSOC);

/*
 * Just for testing: display results.
 * Note: In the future use this complete line to display an array, if you want to.
 */
echo '<pre>' . print_r($result, TRUE) . '</pre>';

/*
 * Print the radio buttons.
 * Note: Note: Apply apostrophe (') and double quote (") like this.
 */
foreach ($result as $key => $item) {
    $username = $item['username'];
    echo '<input type="radio" name="president" value="' . $username . '">' . $username . '</input>';
}

尝试使用异常处理。要正确使用带有异常处理的预准备语句,请参阅this answer of mine(查看Add.php(该类))。

祝你好运!