我试图将单个值从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
我希望这些值显示在单选按钮文本上。
答案 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(该类))。
祝你好运!