2017-05-07 65 views
0

我在主页中写道这就要求从表的foreach()函数导致错误

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 ""; 
    } 
} 

阵列功能现在

$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> 

现在,当我使用没有foreach()函数时,我得到了表的最后一行的值,但是当我使用foreach函数我得到一个输出为V

但它应该显示14列。请帮我解决这个错误!

+0

你明白'$行=阵列( '身份证'=> $ ID, 'OPERATOR_NAME'=> $ OPERATOR_NAME)'__overwrites__的'值$ 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

您每次都覆盖上一行。

相反,你应该将每行:

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