Interrogar a mysql desde php

Hola, lo primero felicitaros por el trabajo que realizais. Mi consulta: Comienzo a estudiar php. Intento conseguir interrogar a la base de datos...

La FAQ Interrogar a mysql desde php tiene

Pertenece a la categoría:
Pregunta
Hola, lo primero felicitaros por el trabajo que realizais.
Mi consulta:

Comienzo a estudiar php.
Intento conseguir interrogar a la base de datos mysql desde php, sólo en los registros que me interesan.

NO consigo hacer que me funcione WHERE.
MI EJEMPLO: despues de conectarme a la base datos, etc.
table>

CODIGO
NOMBRE
DIRECCION

$dbname="ejemplo";
$tablename="clientes";
$query="SELECT * FROM $tablename;";
$result=mysql_db_query ($dbname, $query, $link);
while ($row = mysql_fetch_array ($result))
{
print ("");
print ("$row[codigo]
");
print ("$row[nombre]
");
print ("$row[direccion]
");
print ("");
}
mysql_free_result($result);
?>
Este trozo funciona bien,pero sale toda la base de datos.
Quiero poder seleccionar sólo, clientes de una direccion, o de un nombre, etc.
Lo intento con WHERE y no hay manera. Ya no se ni donde escribir.
Gracias por la ayuda.
Respuesta de Ricardo Ruiz
Este es para el área de SQL, pero normalmente cuando se genera el código SQL de manera dinamica desde PHP deberas de tener mucho cuidado.

La respuesta pudiera ser:

$query="SELECT * FROM $tablename";
$query.="WHERE id_cliente LIKE %".$variable."%;";

Ten cuidado de las varibles, antes de insertarlas o correr cualquier consulta deberas parsearlas o algun método en el cual puedas hacer querys que no vayan a poder inyectarle codigo SQL.

La segunda parte, ahi empezaras a poner todas las clausulas como si correr la consulta en consola.

Volver al árbol de categoríasVolver al árbol de categorías

Comentarios

LuisBarrera

14/2/2012
mysql desde php
pudes trabajarlo asi:

SELECT * FROM $tablename WHERE id=$table_id
é incluso podriar realizar otro filtro con la palabra AND por ejemplo:

SELECT * FROM $tablename WHERE id=$table_id AND $table_estado = 'active';

Por otra parte si vas a trabajar con mysql y php utiliza la funcion mysql_query($sql); para realizar las consultas.

Por otra parte no olvides siempre de cerrar la conexion utilizando mysql_close($conexion); al final de tu código.

mintakastar

14/2/2012
Ademas
Ademas, ( por experiencia propia ), se me haria buena practica que en las cadeas de queries, se deje un espacio al inicio y otro al fin de cada cadena, asi, cuando se concatenen no queden queries pegados

-- esta es la solucion al problema:
$query="SELECT * FROM $tablename";
$query.="WHERE id_cliente LIKE %".$variable."%;";

"SELECT * FROM miTablaWHERE id_cliente LIKE '%miFiltro%';"

-- aconsejaria , por buena practica, los espacios :
$query=" SELECT * FROM $tablename ";
$query.=" WHERE id_cliente LIKE %".$variable."% ; ";


" SELECT * FROM miTabla WHERE id_cliente LIKE '%miFiltro%'; "

Talvez es algo que se sobre entiende , o se resuelve en el momento que pasa,

pero no deja de ser una buena practica =D

JIsraelHS

15/2/2012
Funciona, pero
Efectivamente esto funciona muy bien incluso yo prefiero usar la concatenación, me es mas logico que usarlo dentro, la otra aguas con los espacios, ya que si concatenas dos cadenas como el ejemplo te mandara error, por que?.

$query="Select * form".$tabla;
$query.="Where id=".$id;

Esto realmente es: Select * from tablaWhere id=1... Como lo valido pues yo utilizo normalmente 'echo $query;', solucion $query.=" Where....

Seether

22/2/2012
Consulta Especifica
Para la consulta que tu necesitas debes hacerlo con el operador OR ya que tu buscas por nombre o por domicilio es la consulta que mas se acercaria a lo que buscas quedaria asi:

$result = mysql_query("SELECT * FROM $tablename WHERE nombre = '$variable_nombre' || direccion = '&variable_direccion'");

while($row = mysql_fetch_array($result)) {
echo $row['codigo'] . "<br>";
echo $row['nombre'] . "<br>";
echo $row['direccion'];
}

Esta consulta te debera arrojar solo los registros que cumplan con una u otra condicion

engendrone

15/3/2012
Lo que yo hago....
A mi me gusta hacer uso de matrices, de este modo:

$where[] = "nombre like '%".mysql_real_escape_string($variableNombre)."%'";
$where[] = "id = ".$variableId;
$where[] = "nombrecampo = ".$variableCampo;

Nota el uso de mysql_real_escape_string, te sirve para asegurarte que el query este bien estructurado y ademas puedes llegar a evitar un poco la inyección de SQL

Una vez que tengo mi matriz cargada lo que hago es:

$query = "select * from tabla where ".implode(", ", $where);

de esa manera tu sentencia es tan dinámica como se pueda. Es obvio que debes agregar validaciones, en el caso de que la matriz $where no contenga registros, los tipos de datos, etc.

Espero que te sirva, yo lo uso con mucha frecuencia

lmvalenzuela

17/7/2012
MySQL desde PHP
Una herramienta que es muy útil cuando estas comenzando a aprender sobre PHP y MySQL son los manejadores de bases de datos. Uno que te recomiendo es phpMyAdmin. En casi todos los servidores de hospedaje lo tienen disponible. Este te va a permitir aprender de una forma un poco mas simple el uso del lenguaje SQL.
El phpMyAdmin, cuenta con herramientas que te permiten incluso, generar el código PHP de una consulta (query) en particular.
Otra opción es el MySQL workbench, ese lo encuentras en el sitio de MySQL.
Suerte !!

Alicia

15/11/2012
consulta a la base de datos con el operador like
Buenos dias, no se donde meterme para realizar una consulta urgente creo que no es aqui pero solicito ayuda urgente para finalizar mi proyecto, todo iba bien hasta que añadi el operador like en mi consulta a la base de datos, resulta que hace bien la consulta que tiene liki pero despues haga lo que haga me presenta toda la base de datos no se que falla se no os molesta podria enviaros el codigo para ver que hago mal, muchas gracias de antemano y un saludo

Esteban Beltran

19/2/2013
conexion ala base de datos
LO uo veo en el codgo que envias es la conexion unico que no veo es la conexion ala basede datos $link=mysql_conect_db(host,user,pasword);

revisa esa parte ok
FAQ relacionadas

Para ver más FAQ relacionadas accede a las categorías:

Volver al árbol de categoríasVolver al árbol de categorías