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
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:
Ya que "0" es distinto de 0 y tendría que revisar miles de sentencias IFVer 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>"; }
¿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?