¿Qué función mysqli debo usar?
Pregunta
Actualmente estoy tratando de extraer datos de una tabla, y estoy usando esto:
$online = mysqli_fetch_field(mysqli_query($db,
"SELECT `online` FROM `tbl_system` WHERE `property` = 'extranet'"));
Sin embargo, no está funcionando como eco dar $online
"Matriz".
Aquí hay una var_dump de $ en línea
object(stdClass)#3 (11) {
["name"]=> string(6) "online"
["orgname"]=> string(6) "online"
["table"]=> string(10) "tbl_system"
["orgtable"]=> string(10) "tbl_system"
["def"]=> string(0) ""
["max_length"]=> int(1)
["length"]=> int(11)
["charsetnr"]=> int(63)
["flags"]=> int(36865)
["type"]=> int(3)
["decimals"]=> int(0) }
Solución
¿Quieres:
$query = mysqli_query($db, "SELECT online FROM tbl_system WHERE property = 'extranet'");
$row = mysqli_fetch_array($query);
$online = $row[0];
mysqli_fetch_field()
es para recuperar definiciones de columna , no datos, y es trabajando perfectamente bien: le da la espalda un objeto de definición de columna
mysqli_fetch_array()
, mysqli_fetch_assoc()
, y mysqli_fetch_object()
son para la recuperación de datos.
Otros consejos
Pruebe una de las siguientes funciones:
-
mysqli_fetch_array
- Obtiene una fila como una asociativa, una matriz numérica, o ambos$row = mysqli_fetch_array($result); echo $row[0]; // or echo $row['online'];
-
mysqli_fetch_assoc
- Obtiene una fila de resultado como una matriz asociativa$row = mysqli_fetch_assoc($result); echo $row['online'];
-
mysqli_fetch_object
- Devuelve la fila actual del resultado en forma de un objeto$row = mysqli_fetch_object($result); echo $row->online;
-
mysqli_fetch_row
- Obtener una fila de resultado como una matriz enumerada$row = mysqli_fetch_row($result); echo $row[0];
Con $result
ser:
$result = mysqli_query($db, "SELECT `online` FROM `tbl_system` WHERE `property` = 'extranet'");
La función que está buscando no está mysqli_fetch_field()
. Se extrae la información de sobre el campo , pero no el de datos de campo en sí .
Tal vez puedas probar:
$row = mysqli_fetch_assoc(mysqli_query($db, "SELECT `online` FROM `tbl_system` WHERE `property` = 'extranet'"));
echo $row['online'];
Si no me equivoco, no hay manera para traer solo un dato de la columna directamente. Necesitará a buscar toda la fila, a pesar de que es sólo una columna, y luego tomar manualmente el valor de la matriz resultante.
Edit: La respuesta de caos ve muy parecido a lo que me refería
.Es un poco offtopic, pero recomiendo que utilice más alto nivel de marco para trabajar con la base de datos, como http: / /adodb.sourceforge.net/ por ejemplo