Hola, estoy traduciendo una web ASP y me estoy encontrando con un montón de dudas/problemas al manejar los datos extraídos de la DB con mysqli
Tengo estas dos funciones. La primera crea un array a través de una consulta:
Código PHP:
Ver original//Procedimiento que crea un Recordset estándar.
//Se le pasa una cadena que es una instrucción SQL
Function CrearRS($sql)
{
Global $conn;
//Rw($sql);
$tabla = $conn->query($sql);
If ($tabla !== False)
{
$num_registros = $tabla->num_rows;
//Si hay resultado.
If ($num_registros > 0)
{
$GLOBALS["tabla"] = $tabla->fetch_all(MYSQLI_ASSOC);
}
$GLOBALS["num_registros"] = $num_registros;
}
Else
{
$GLOBALS["num_registros"] = 0;
}
}
La segunda lo cierra:
Código PHP:
Ver original//Procedimiento que crea un Recordset estándar.
//Se le pasa una cadena que es una instrucción SQL
Function CerrarRS()
{
Global $tabla;
Global $num_registros;
}
No consigo que funciona bien:
Problema 1:
Resulta que tengo que nombrar los campos tal como los tengo en la DB, es decir:
Esto:
$estraduccion = $tabla["0"]["Estraduccion"];
NO es lo mismo que esto:
$estraduccion = $tabla["0"]["EsTraduccion"];
En el segundo caso me devuelve NULL por la T mayúscula
¿Esto no se puede solucionar?
Problema 2:
Todos los campos devueltos son tipo String
Por lo tanto "0" no es lo mismo que 0, esta condición no me funciona:
Código PHP:
Ver original//Si estamos editando una traducción.
If ($estraduccion !== 0)
{
//Los campos siguientes no serán editables en las traducciones.
$readonly = " readonly ";
$infotxt = "Traducción de : " . ComprobarLogico($tabla_modulo, "NOTitulo", "Id=" . $estraduccion) .
LinkBlank(1, "/blog/" . $estraduccion . "/" . ComprobarLogico($tabla_modulo, "Title", "Id=" . $estraduccion)) . "</br>" .
"Haga clic para ver otros idiomas: <i class='fa fa-flag fa-lg cms_mostrar_traducciones' data-id='" . $estraduccion . "' data-mod='" . $tabla_modulo . "'></i>";
}
Ya que "0" es distinto de 0 y tendría que revisar miles de sentencias IF
¿hay manera que mysqli devuelva el campo con su tipo?
problema 3:
Después de ejecutar una consulta y extraer sus datos, siempre la cierro.
Pues bien ¿por qué después de ejecutar CerrarRs() sigo teniendo acceso a las variables?