2017-05-23 5 views
-1

私の目標はアルファベット順に国名を印刷することです。これは、その後foreach loop not entered

function getCountries(){ 
    $namesQ = 'SELECT Name FROM `country` ORDER BY Name ASC'; 
    global $myPdo; 
    $command = $myPdo -> prepare('namesQ'); 
    $command -> execute(); 
    return $command;  
} 

...私はそれのために書いた関数であり、私はHTMLの配列から名前をエコー...

<!DOCTYPE html> 

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     <title>Country Names</title> 

     <link type="text/css" rel="stylesheet" href="primary.css" /> 
    </head> 

    <body> 
     <div id="main" action="controller.php" method="post"> 
      <?php 
       $countries = getCountries(); 
       $countryNames = $countries->fetchAll(); 

       foreach($countryNames as $countryName) 
       { 
        echo 'test'; 
        echo '<p> ' . $countryName['Name'] . '</p>'; 
       } 
      ?> 
     </div> 
    </body> 
</html> 

しかし、foreachループが取得していないようです全くアクセスしていません。

echo 'test'; 

...画面には印刷されません。

$countryNameのインデックスをfhsdjkに変更しましたが、そのようなインデックスはありませんが、エラーメッセージや何も表示されません。 foreachループ内にあるものは、どのようにしてechoに届きますか?

+0

あなたpassig文字列あなたがvaribale $を渡す必要がありますコマンド= $ myPdo - >準備($ namesQ); – JYoThI

答えて

1

あなた通過文字列は、あなたは、文字列'namesQ'を準備していること、

$command = $myPdo -> prepare('namesQ'); 
(To) 
$command = $myPdo->prepare($namesQ); 
0

に思え変数渡す必要がありますが、実際に$namesQに割り当てられたSQL文を準備します。あなたはいくつかの問題発見を持っているので、

$countryNames = getCountries(); 

そして:だから、私はあなたがgetCountries()関数にfetchAll()呼び出しを含めるようにしてちょうど呼び出すことが示唆

$command = $myPdo->prepare($namesQ); 

$command = $myPdo->prepare('namesQ'); 

を置き換えますdb-accessエラー、私は常に例外処理を実装することをお勧めします。特に、データアクセスの抽象化としてPDOを使用している場合。ここでは例 - あなたのコードと同様に:

function getCountries() { 
    try { 
     $namesQ = 'SELECT Name FROM `country` ORDER BY Name ASC'; 

     global $myPdo; 

     // Hier: replaced 'namesQ' with $namesQ. 
     $command = $myPdo->prepare($namesQ); 

     if (!$command) { 
      throw new Exception('The SQL statement can not be prepared!'); 
     } 

     if (!$command->execute()) { 
      throw new Exception('The PDO statement can not be executed!'); 
     } 

     return $command->fetchAll(); 
    } catch (PDOException $pdoException) { 
     echo '<pre>' . print_r($pdoException, true) . '</pre>'; 
     exit(); 
    } catch (Exception $exception) { 
     echo '<pre>' . print_r($exception, true) . '</pre>'; 
     exit(); 
    } 
} 

たぶん例外処理に関する私の初期の答えは、あまりにも参考になります。

Exception handling for PDO::prepare() and PDOStatement::execute() + A generalized exception handling scheme