MySQLi查询在数组上循环返回throws未定义的偏移量:1


MySQLi query looping over array returns throws Undefined offset: 1

我正在执行一些查询。问题是数组上的循环抛出

未定义偏移:1

这是我使用的代码:

$id=1;
$books="";
$prep_stmt= "SELECT * FROM books WHERE id=?";
$stmt = $mysqli->prepare($prep_stmt);
$stmt->bind_param('i', $id);
$stmt->execute();
if (!$stmt) {
    die('There was an error running the query [' . $mysqli->error . ']');
    exit();
}
$meta = $stmt->result_metadata();
while ($field1 = $meta->fetch_field()) {
    $parameters[] = & $row[$field1->name];
}
call_user_func_array(array($stmt, 'bind_result'), $parameters);
while ($stmt->fetch()) {
    foreach ($row as $key => $val) {
        $x[$key] = $val;
    }
    $results[] = $x;
}
if ($stmt->num_rows>0){
    for ($i = 0; $i <= sizeof($results[0]) - 1; $i++) {
        $id=$results[$i]['id'];
        $name=$results[$i]['name'];
        $books=$books."<option value='".$id."'>".$naziv."</option>";
    }

您在$results中有一个行数组,但是当循环时,您会从0循环到列的数量

$i <= sizeof($results[0])

如果列数大于结果数,则会得到未定义的偏移量。试试这个:

for ($i = 0; $i <= sizeof($results) - 1; $i++) {
    $id=$results[$i]['id'];
    $name=$results[$i]['name'];
    $books=$books."<option value='".$id."'>".$naziv."</option>";
}

或者,更简洁地说:

foreach($results as $result) {
    $id=$result['id'];
    $name=$result['name'];
    $books=$books."<option value='".$id."'>".$naziv."</option>";
}