2017-08-31 8 views
2

私は、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>" 

    ?> 

が、それはこの

になり "お知らせ:内の文字列への変換アレイ C:\xampp\htdocs\testing\vote.php" 私は値をチェックするprint_r($result);を使用してみました

[0] = admin 
[1] = operation1 

これらの値をラジオボタンのテキストで表示されます。

+0

これはあなたがここで尋ねるものとは直接関係しませんが、 ''は終了タグを必要としませんが、本当にラジオボタンとして役立つ場合は_ value_属性が必要です。 –

答えて

0

に変更するとのコメントに答えるパニックに応じて変更された場合にのみ動作します

echoを使用して配列要素の代わりに配列を印刷しようとしているためです。

fetchAll()を使用しています。したがって、$result配列は2次元配列です。このように:

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(クラス)を参照)を参照してください。

幸運を祈る!

0

これで、すべての値がすでにフェッチされています。値は配列(データのリスト)に格納されています。あなたは現在、そのリストを印刷しようとしていますが、PHPは単純なエコーでそれをサポートしていません。この配列をループして印刷する必要があります。

$ result =リスト変数は、すでに持っている名前を取ったものです。このループは毎回、リストの次の値を変数$ itemに入れて、リストではなく単一の値にします。

EDITマイinital答えはfetchAllのメソッド呼び出しがいないあなたは、通知を取得している

fetchAll(PDO::FETCH_COLUMN) 
+0

これでも同じエラーが発生します。それぞれの '$ item'は連想配列です。 –

+0

'fetchAll'コールで' PDO :: FETCH_COLUMN'を使うと、このようにすることができます。 –

+0

@ Don'tPanic文字列の値を持つリストを記述したポスターと同様に、$ itemはそれぞれ文字列になるので、連想配列については不平を言ってはいけません。 – Fyllekanin

関連する問題