Pues tengo algo parecido a esto:
<?php
function DatosDeCliente($ID){
include("config.php");
$sql="SELECT * FROM Clientes WHERE ID='".$ID."'";
$resultado = mysql_db_query($db_name, $sql);
$valor = mysql_fetch_array($resultado);
return $valor;
};
$IDcliente=7;
$valores=DatosDeCliente($IDcliente);
echo("Hola, el nombre de ese ID es: ");
echo($valores["nombre"]);
?>
El problema es que no me funciona: $valores["nombre"]
Lo he probado de varias formas y no se como se hace correctamente. (El SQL está bien, si pongo dentro de la funcion $valor["nombre"] si que va genial.
Gracias ^.^
En ese tipo de caso siempre hay que ir testeando y no programar todo de una.
Hazle un
print_r($valores);
<?php
function DatosDeCliente($ID){
include("config.php");
$sql="SELECT * FROM Clientes WHERE ID='".$ID."'";
$resultado = mysql_db_query($db_name, $sql);
$valor = mysql_fetch_array($resultado);
return $valor;
};
$IDcliente=7;
$valores=DatosDeCliente($IDcliente);
print_r($valores);
?>
Y muestra el resultado.
Saludos.
El problema es que como tú dices no puedo usar la consulta tipo:
$valores["nombre"]
$valores["Ciudad"]
¿Alguien sabe la solución?
Cambia mysql_fetch_array() por mysql_fetch_assoc().
Yo tengo esta pequeña función que hace lo que tu quieres...
function ejecutarQuery($sql, $retorno = true){
$conn = abrirConexion();
try{
$query = $conn->query( $sql );
if( $retorno ){
while( $fila = $query->fetch(PDO::FETCH_BOTH) ){
$datos[] = $fila;
}
cerrarConexion($conn);
return $datos;
}else{
return true;
}
}catch( PDOException $ex ){
print $ex->getMessage();
return false;
}
}
A lo que quedaría como resultado,
$PoC[0] = array(0 => "001", 'codigo' => "001", 2 => "Alex", 'nombre' => "Alex");
$PoC[1] = array(0 => "001", 'codigo' => "001", 2 => "Juan", 'nombre' => "Juan");
Cita de: madpitbull_99 en 19 Junio 2011, 14:03 PM
Cambia mysql_fetch_array() por mysql_fetch_assoc().
Me funcionó genial con esa.
Shell Root gracias por el código. Nunca pensé hacer las consultas a través de una función... muy bueno, que grandre... Una pregunta, no entiendo lo de $retorno=TRUE ¿Me lo explicas?
Gracias.
Es que esa función la uso de forma general. Por ejemplo,
SELECT * FROM usuarios;
Esa consulta obviamente va a retornar unos valores.
Pero si realizo un INSERT o UPDATE no lo hará. Así que le paso por parámetro algo para que no intente devolverme datos cuando no los tiene que devolver. Me entiendes?
PD: Sí lo que estáis preguntando es el seteo de la variable cuando declaro los parámetros, pues es una inicialización de la variable con algún valor por defecto, así a la hora de llamarla no es necesario ponerle ese parámetros porque ya esta predefinido -amenos de que quieras darle otro valor-,
Por ejemplo, es lo mismo decir:
ejecutarQuery($sql);
qué:
ejecutarQuery($sql, true);
Anda, no sabía que podías llamar a una función con menos parametros de los que tiene la función.
Muchas gracias :-)
lo que sucede es que en ese caso la variable tiene un valor por defecto, lo que hace al parámetro opcional y por eso puedes llamar a la función pasándole o no un valor para ese argumento.
saludos!