我是一个非常新手的程序员,我使用PHP并且对fetch_assoc()有疑问/问题。
我有这个方法返回数据库的结果咨询:
public function getUsuarios() {
try {
$resultado = $this->conexion->query("SELECT * FROM login_usuarios");
} catch(Exception $e) {
throw new Exception("Error al obtener los usuarios de la base de datos. Código de error: ".mysqli_errno);
} finally {
if($this->conexion != null) {
$this->conexion->close();
}
}
return $resultado;
}
此脚本迭代并显示数据库咨询结果的数据:
<table>
<tr>
<td>Código</td>
<td>Nombres</td>
<td>Apellidos</td>
</tr>
<?php while ($fila = mysqli_fetch_array($usuarios)) { ?>
<tr>
<td><?php print($fila['codUsuario']); ?></td>
<td><?php print($fila['nombres']); ?></td>
<td><?php print($fila['apellidos']); ?></td>
</tr>
<?php
}
$usuarios->free();
?>
</table>
通过这种方式,一切正常(但我不明白xD,我在论坛中看到这种方式)。
但是,我在许多网站上看到了其他方式。通过这种方式,脚本就像这样:
// first convert the result to a fetch_assoc
$usuarios = (new Consultas)->getUsuarios()->fetch_assoc();
<table>
<tr>
<td>Código</td>
<td>Nombres</td>
<td>Apellidos</td>
</tr>
<?php foreach ($usuarios as $fila) { ?>
<tr>
<td><?php print($fila["codUsuario"]); ?></td>
<td><?php print($fila["nombres"]); ?></td>
<td><?php print($fila["apellidos"]); ?></td>
</tr>
<?php
}
$usuarios->free();
?>-->
</table>
但是通过这种方式,我有一个非法字符串偏移量mysql 。这看起来像foreach迭代每列而不是每一行。
为什么第一种方式有效,第二种方式不工作?,如何工作mysqli_fetch_array($ result)和fetch_assoc()?
感谢您的帮助。
答案 0 :(得分:0)
构建finally
会在您致电fetch_assoc()
之前关闭连接。
尝试发表评论$this->conexion->close();
。
您的代码遍历行。 mysqli_result::fetch_assoc
只返回一行。请阅读文档。