
Duda con cunsulta PDO
Publicado por Steven (1 intervención) el 25/10/2015 22:50:26
Buenas, el inconveniente que tengo es el siguiente;
Tengo una función que realiza la búsqueda de un ID en UN campo de una tabla en mi base de datos MySql mediante una conexion con PDO, y todo va bien solo que quisiera optimizar un poco el sistema haciendo que la funcion pueda buscar cualquier valor en cualquier campo que le pase como parámetro.
Mi función está de la siguiente manera:
He probado lo que comento pero según he leido no puedo hacerlo sustituyendo dinámicamente el campo de la tabla con las funciones bindParam() y bindValue(), es decir haciendo esto:
Agradecería que me dijeran si es posible hacerlo de otra manera o con algún otro método de PDOStatement o PDO.
Tengo una función que realiza la búsqueda de un ID en UN campo de una tabla en mi base de datos MySql mediante una conexion con PDO, y todo va bien solo que quisiera optimizar un poco el sistema haciendo que la funcion pueda buscar cualquier valor en cualquier campo que le pase como parámetro.
Mi función está de la siguiente manera:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public function get_usuario($id_usuario=''){
if($id_usuario != ''){
//iniciamos una conexion a la base de datos
$this->objConexion = new Conexion();
//consulta para traer el registro del usuario al que hace referencia $id_usuario
$this->objConexion->query = $this->objConexion->prepare('SELECT *
FROM usuarios
WHERE id_usuario = :id_usuario');
$this->objConexion->query->bindParam(':id_usuario', $id_usuario);
$this->objConexion->query->execute();
//comando que devuelve el numero de filas afectadas por la sentencia
$this->objConexion->rows = $this->objConexion->query->rowCount();
if($this->objConexion->rows == 1){
//sentencia que devuelve un array con todas las filas del resultado de la consulta
$this->objConexion->result = $this->objConexion->query->fetchAll();
//asignamos a cada propiedad de la clase el valor de su correspondiente
//campo en la tabla `usuarios` del registro que trajo la consulta
foreach ($this->objConexion->result[0] as $propiedad => $valor){
$this->$propiedad = $valor;
}
//indicamos que el usuario fue encontrado
$this->mensaje = 'Usuario encontrado';
}else {
//indicamos que el usuario no fue encontrado
$this->mensaje = 'Usuario no encontrado';
}
//cerramos la conexion con la base de datos
$this->objConexion = null;
}
}
He probado lo que comento pero según he leido no puedo hacerlo sustituyendo dinámicamente el campo de la tabla con las funciones bindParam() y bindValue(), es decir haciendo esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public function get_usuario($valor_prueba, $campo_prueba){
if($valor_prueba != ''){
//iniciamos una conexion a la base de datos
$this->objConexion = new Conexion();
//consulta para traer el registro del usuario al que hace referencia $id_usuario
$this->objConexion->query = $this->objConexion->prepare('SELECT *
FROM usuarios
WHERE :campo_prueba = :valor_prueba');
$this->objConexion->query->bindParam(':campo_prueba', $campo_prueba);
$this->objConexion->query->bindParam(':valor_prueba', $valor_prueba);
//echo 'Campo= '.$campo_prueba.'Valor= '.$valor_prueba;
$this->objConexion->query->execute();
//comando que devuelve el numero de filas afectadas por la sentencia
$this->objConexion->rows = $this->objConexion->query->rowCount();
if($this->objConexion->rows == 1){
//sentencia que devuelve un array con todas las filas del resultado de la consulta
$this->objConexion->result = $this->objConexion->query->fetchAll();
//asignamos a cada propiedad de la clase el valor de su correspondiente
//campo en la tabla `usuarios` del registro que trajo la consulta
foreach ($this->objConexion->result[0] as $propiedad => $valor){
$this->$propiedad = $valor;
}
//indicamos que el usuario fue encontrado
$this->mensaje = 'Usuario encontrado';
}else {//echo 'malo1';
//indicamos que el usuario no fue encontrado
$this->mensaje = 'Usuario no encontrado';
}
//cerramos la conexion con la base de datos
$this->objConexion = null;
}
}
Agradecería que me dijeran si es posible hacerlo de otra manera o con algún otro método de PDOStatement o PDO.
Valora esta pregunta


0