Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Query que solo genera resultados numericos

Estas en el tema de Query que solo genera resultados numericos en el foro de PHP en Foros del Web. Hola, estoy ejecutando un query sobre un campo tipo varchar. Tengo almacenado datos con caracteres exclusivamente como XXXX y otros con solo digitos como 01 ...
  #1 (permalink)  
Antiguo 30/05/2015, 15:14
 
Fecha de Ingreso: mayo-2015
Ubicación: Morelos
Mensajes: 3
Antigüedad: 8 años, 10 meses
Puntos: 0
Pregunta Query que solo genera resultados numericos

Hola, estoy ejecutando un query sobre un campo tipo varchar. Tengo almacenado datos con caracteres exclusivamente como XXXX y otros con solo digitos como 01 y otros compuestos como XX05.
El problema es que la busqueda solo recupera los digitos y los demás no los pela.
Es decir cuando el valor a buscar es 01 si me regresa los demas datos, pero cuando el valor buscado lleva algun caracter como XXXX o XX05 no me regresa nada

Tal vez sea una pregunta de kinder pero soy novato en PHP y MySql.

Este es un extracto del código:

if(!empty($_POST["CveEmpresa"])){
$CveEmp=$_POST["CveEmpresa"];
$sql1="Select * from clientes where CveEmpresa=".$CveEmp;
$rs = mysql_query($sql1);
if($rs){
while ($row = mysql_fetch_assoc($rs)) {
$CveEmp=$row["CveEmpresa"]; $NomEmp=$row["NomEmpresa"]; $RnSoc=$row["RazonSocial"];
} } }


Gracias
  #2 (permalink)  
Antiguo 30/05/2015, 15:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Query que solo genera resultados numericos

En SQL los valores numéricos puedes ir sin comillas, pero los valores que no son numéricos debes ir sí o sí con comillas:

Cita:
SELECT * FROM tabla WHERE columna = 'XX05'
Eso es SQL básico y no tiene nada que ver con código PHP.

Por favor consulta una referencia de SQL.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 30/05/2015, 16:29
 
Fecha de Ingreso: mayo-2015
Ubicación: Morelos
Mensajes: 3
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Query que solo genera resultados numericos

Gracias, eso lo entiendo. Mi duda es porque definí mi variable como sigue; $CveEmp=""; y el campo CveEmpresa es tipo varchar. Por ese motivo yo esperaría que todos los datos sean tratados como string.
Y efectivamente creo que se trata de un tema de SQL.
Te agradezco tu respuesta.
  #4 (permalink)  
Antiguo 30/05/2015, 16:55
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Query que solo genera resultados numericos

Cita:
Por ese motivo yo esperaría que todos los datos sean tratados como string.
Ese es tu principal error, "esperas" algo de lo que no tienes ni la menor certeza.

Que declares la variable como string, y que en la BD la tengas como VARCHAR no arregla por arte de magia tu consulta de SQL:

Código PHP:
Ver original
  1. // MAL: así haces tu
  2. $valor = 'XX01';
  3. $sql = 'SELECT * FROM tabla WHERE campo = ' . $valor;
  4. // produce lo siguiente: SELECT * FROM table WHERE campo = XX01
  5.  
  6. // BIEN: deberías corregir tu consulta
  7. $valor = 'XX01';
  8. $sql = "SELECT * FROM tabla WHERE campo = '$valor'";
  9. // produce lo siguiente: SELECT * FROM table WHERE campo = 'XX01'

Si analizas tu código jamás pones la comillas al rededor de tu variable: he ahí tu error.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 02/06/2015, 11:47
 
Fecha de Ingreso: mayo-2015
Ubicación: Morelos
Mensajes: 3
Antigüedad: 8 años, 10 meses
Puntos: 0
De acuerdo Respuesta: Query que solo genera resultados numericos

Muchas gracias, ya corregí mi consulta con tus observaciones.

Etiquetas: genera, mysql, numericos, query, resultados, select, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:58.