2016-08-15 12 views
0

これまでのクエリはうまくいきました。私は通常mysqlを使用しますが、最近godaddyを介してあらかじめ設定されたvpsに変更しました。昨夜、PDOを介してサーバーに接続しようとしていましたが、これは接続が確立されていることを示しています。結果が表示されないPDOクエリ

次私が使用してテーブルからデータを選択しようとしていた。

global $conn; 
$sql = "SELECT name FROM suppliers"; 
$stm = $conn->prepare($sql); 
$stm->execute(); 
return $stm->fetch(); 

すべてこれは私のウェブサイト上で示したが、接続に成功している、アレイ

それは、任意の配列情報または何も表示されません、ちょうど単語 "配列"。テーブルには情報が入っているので、結果を表示する必要があります。私が間違っていることのアイデア?

+1

あなたはあなたにリテラル単語 'Array'を与える配列を、印刷しようとしています。そう...しないでください。 print_r、var_dump、foreachなど... –

+1

また、どのようにこれを使用していますか?私はあなたがこのアプローチで最初の行しか持たないと思う。私は 'fetchAll'を使うか、' fetch'を 'while'に入れて、必要なすべてのデータを持つ配列を作成します。 – chris85

+0

@ chris85はい、あなたは正しいです。ありがとうございました。それをしばらくの間声明に入れて、それはうまくいった。 –

答えて

1

Arrayは、配列をエコーし​​ているためです。 Fetchは、アレイ、

PDO :: FETCH_BOTH(デフォルト)を返します:あなたが照会されているので、あなたの結果で返されるカラム名と0・インデックス付きの列番号の両方をインデックスとする配列が

を設定して返します。完全なテーブルではおそらくすべての結果が必要なので、fetchをループしてその配列を返す必要があります。

$sql = "SELECT name FROM suppliers"; 
$stm = $conn->prepare($sql); 
$stm->execute(); 
while($row = $stm->fetch()) { 
    $returned_array[] = $row['name']; 
} 
return $returned_array; 

次に、すべてのサプライヤ名に対してこれを繰り返し使用しています。

その後、
foreach(function_call_for_names() as $name) { 
    echo $name; 
} 

代わりに、あなたはPDO fetchAll機能を使用することができ、

$sql = "SELECT name FROM suppliers"; 
$stm = $conn->prepare($sql); 
$stm->execute(); 
return $stm->fetchAll(); 

foreach(function_call_for_names() as $row) { 
     echo $row['name']; 
} 
関連する問題