2017-05-07 26 views
0

Iはのforeach()関数原因エラー

$oprtor=fetchoperator(1); 

すぐHTMLページ

<select id="MPOperator" name="opr" class="form-control" required> 
     <?php foreach($oprtor as $v2) { 
      echo "<option value=".$v2['id'].">".$v2['operator_name']."</option>"; } ?>          
      </select> 

に来るメインページにすぐテーブル

function fetchoperator($operator_type) 
{ 
    global $mysqli; 
    $stmt = $mysqli->prepare("SELECT 
     id, 
     operator_name 
    FROM gb_operators WHERE operator_type = ? 
    "); 
    $stmt->bind_param("s", $operator_type); 
    $stmt->execute(); 
    $stmt->bind_result($id,$operator_name); 
    while ($stmt->fetch()){ 
     $row = array('id' => $id, 'operator_name' => $operator_name); 
    } 
    $stmt->close(); 
    if(!empty($row)) 
    { 
     return ($row); 
    } 
    else 
    { 
     return ""; 
    } 
} 

からアレイを呼び出す関数を書い今私はforeach()関数なしで使用しているとき私はテーブルの最後の行の値を取得していますが、私はforeach関数を使用しているとき私はVとして出力を得ています

しかし、それは14の列を表示する必要があります。エラーで私を助けてください!!!!

+0

理解しています$ row'は毎回ですか? –

答えて

0

は、あなたは、配列内の新しい値を追加するためにスカラー変数を何回

function fetchoperator($operator_type) 
{ 
    global $mysqli; 
    $stmt = $mysqli->prepare("SELECT id, operator_name 
           FROM gb_operators 
           WHERE operator_type = ? 
    "); 
    $stmt->bind_param("s", $operator_type); 
    $stmt->execute(); 
    $stmt->bind_result($id,$operator_name); 
    while ($stmt->fetch()){ 
     // error here 
     //$row = array('id' => $id, 'operator_name' => $operator_name); 

     $row[] = array('id' => $id, 'operator_name' => $operator_name); 
    } 
    $stmt->close(); 
    if(!empty($row)) { 
     return $row; 
    } else { 
     return ""; 
    } 
} 
+0

おかげで出力が得られました – user2018030

0

変数$rowを上書きしています。これは、あなたが最後の行だけを取得している理由です。これを$row[]に変換し、行を$row配列にプッシュします。

あなたは、配列を充填されていないこの

while ($stmt->fetch()){ 
    $row[] = array('id' => $id, 'operator_name' => $operator_name); 
} 
0

使用array_push()の多くを書く上であるようにしてください。あなたの場合。配列を新しい値に設定するだけです。

array_push($row, array('id' => $id, 'operator_name' => $operator_name)); 
0

毎回前の行を上書きしています。

代わりに、あなたはそれぞれの行を追加する必要があります:あなたはの `$行=配列( 'ID' => $ ID、 'OPERATOR_NAME' => $ OPERATOR_NAME)` __overwrites__値 `こと

$row = []; 
while ($stmt->fetch()){ 
    $row[] = array('id' => $id, 'operator_name' => $operator_name); 
} 
return $row; 
関連する問題