hola
estoy haciendo un codigo sencillo para aprender como usar funciones en php, hice 2 archivos, uno es para registar datos a mysql, y el segundo es para consultar
pero tengo un problema en el archivo de consulta, no me aparece nada, unicamente puedo registar datos
este es el codigo para consulta
<?php
include('funcion.php');
$cc=$_GET['cedula'];
if($resultset = getSQLResultSet("SELECT cedula,nombre,apellido,direccion,telefono FROM `tablaprueba` where cedula = '$cc'")){
while($row = $resultset->fetch_array(MYSQLI_NUM)){
echo json_encode($row);
}
}
?>
y esta es la funcion
header('Content Type= text/html; charset=utf-8');
function getSQLResultSet($commando){
$mysql = new mysqli("localhost", "root", "pass", "prueba");
if($mysqli->connect_errno){
printf("conexion fallida: %s", $mysqli->connect_errno);
exit();
}
if($mysqli->multi_query($commando)){
return $mysqli->store_result();
}
$mysqli->close();
}
?>
que error podria tener?, ya que no me muestra ningun resultado
el "primary key" de la base de datos es "cedula", lo cual hago lo siguiente para que me muestre el resultado de la cedula que solicito
localhost/consulta.php?cedula=123456
pero no me muestra nada el explorador, utilizo firefox
salu2
<?php
include('funcion.php');
$cc=$_GET['cedula'];
if($resultset = getSQLResultSet("SELECT cedula,nombre,apellido,direccion,telefono FROM `tablaprueba` where cedula = '$cc'")){
while($row = $resultset->fetch_array(MYSQLI_NUM)){
echo json_encode($row);
}
}
?>
Mira en la sentencia sql, mejor dicho en esta parte:
("SELECT cedula,nombre,apellido,direccion,telefono FROM `tablaprueba` where cedula = '$cc'")
quitale las comillas a $cc, recuerda que cuando trabajas con comillas dobles se puede insertar variables, y ademas quitale las comillas a tablaprueba, hay dos formas de hacerlo, una es asi:
('SELECT cedula,nombre,apellido,direccion,telefono FROM tablaprueba where cedula = ' . $cc)
y la otra es asi:
("SELECT cedula,nombre,apellido,direccion,telefono FROM tablaprueba where cedula = $cc ")
Fijate a ver que tal, saludos!
ya lo intente de las dos formas pero no me muestra nada, tambien lo quise hacer directamente
("SELECT * FROM tablaprueba where cedula = 123456")
no se si sirva de algo, pero estoy usando apache2 en linux, talvez me haga falta algo para usar json o porque sera no me aparecera el resultado?
tambien ya intente borrando el cache del explorador
Lo mejor seria "depurar el codigo" por ejemplo, en en el archivo función en esta parte agregale lo que yo le agregue:
if($mysqli->multi_query($commando)){
echo "hasta aqui funciona";
return $mysqli->store_result();
}
si te lo imprime en pantalla es que hasta ahi funciona el codigo, luego si todo va bien haz esto:
if($mysqli->multi_query($commando)){
$hola = $mysqli->store_result();
echo $hola;
return $hola;
}
si en ese caso te imprime true en pantalla, entonces sabes que el error está en la respuesta, avisame si hasta ahi va bien y te ayudo a seguir con el resto de la depuracion
no me aparece el mensaje, si coloco un echo fuera de if, si me aparece un mensaje, pero dentro no aparece ninguno
Intentaste con la consulta sql que yo te mande?
creo el error es parte ya sea del explorador o de linux o de las dos, me pase un momento a windows para realizar el codigo de consulta a mysql como me dijiste, instale wampserv y me funciono, ya me aparece el resultado
???, pero que me hara falta en linux??
EDITADO
-------------
coloque este ejemplo y me funciono json, es algo raro, pero sigue sin funcionar consulta.php en linux
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
jajaja, que torpe me senti, jaja ya lo solucione
$mysql = new mysqli("localhost", "root", "pass", "prueba");
este era mi error... una simple "i"
$mysqli = new mysqli("localhost", "root", "pass", "prueba");
muchas gracias por tu ayuda destructor.php
salu2 ;D
:-[
Te deberia haber saltado error entonces :/ Talvez tienes error_reporting a 0!
Me alegro que hayas podido solucionarlo
Saludos
la proxima vez que quieras saber si una variable tiene realmente algo pon var_dump($variable); (sin echo) y te dirá aunque no tenga nada que tiene valor NULL xD, si usas json te puede decir nada como te pasaba.
como dijo destructor, activa el reporte de errores y ponlo en un nivel alto para que te avise cuando usas variables que no fueron declaradas por ejemplo.
tu ya haz dicho el problema, y su solución asique no voy a decir que te faltaba la i aunque era bastante obvio xD
saludos!
tal como dice Destructor.php cuando tengas un servidor de desarrollo debes trabajar siempre con el reporte de errores habilitado o si no estarás programando a ciegas.
desde php.ini busca error_reporting o si no desde php usa esto:
http://php.net/manual/en/function.error-reporting.php
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
tal como dice Destructor.php cuando tengas un servidor de desarrollo debes trabajar siempre con el reporte de errores habilitado o si no estarás programando a ciegas.
desde php.ini busca error_reporting o si no desde php usa esto:
http://php.net/manual/en/function.error-reporting.php
para que eso funcione el display errors debe estar activado, si no tienes acceso al archivo de inicialización de php (php.ini) puedes usar la directiva de configuración ini_set('regla', valor);
para activar el muestreo de error puedes usar ini_set('display_errors', TRUE); esto te puede servir para servidores web.
pido disculpas si mi respuesta está fuera de lugar, no me tomé el tiempo de leer las respuestas anteriores.
saludos!
Intentan con esto:
<?php
include('funcion.php');
$cc=$_GET['cedula'];
$returnData = array();
if($resultset = getSQLResultSet("SELECT cedula,nombre,apellido,direccion,telefono FROM `tablaprueba` where cedula = '$cc'")){
while($row = $resultset->fetch_array(MYSQLI_NUM)){
$returnData[] = $row;
}
}
echo json_encode($returnData);
?>
Saludos,
Xt3mP.