Pequeña duda rápida de PHP y MySQL

RaymaN

Buenas, tengo una pequeña duda que me está teniendo dos horas aquí sin avanzar. Tengo una tabla con id y nombre, y algunos de los nombres tienen caracteres como comillas simples y dobles. Si hago cualquier consulta palo SELECT * FROM personas WHERE nombre = 'Jose "Pepe"' desde phpMyAdmin funciona perfectamente, pero si desde PHP hago lo mismo no me devuelve nada. He probado mil combinaciones de addslahes, mysql_real_escape_string, comillas dobles, simples, escapadas, etc y nada.

¿Alguien tiene la solución? xD

BLZKZ

\" para escapar las comillas

edit acabo de leer que lo has probado :/

LOc0

A veces la codificación de caracteres da estos problemas. Asegúrate de que la codificación sea la misma en los ficheros .php, la base de datos y de que después de abrir la conexión con la BD desde PHP llamas a http://php.net/manual/es/function.mysql-set-charset.php

Salu2 ;)

1 respuesta
suaveSHOW

es que la función mysql_real_escape_string() se usa cuando insertas los datos en la BD

1 respuesta
RaymaN

#4 el select está dentro de un insert. Voy a mirar lo que comenta #3.

HiGher

Yo no tengo mucha idea, pero has probado la sentencia like?

1 respuesta
RaymaN

#6 si no recuerdo mal la sentencia LIKE se utilizaba para buscar algo con comodines, pero yo quiero buscar algo exacto y que sé que existe.

Sigue sin funcionar :(. Parseo mediante curl una web que está en utf8, a la función de parseo le hago un utf8_decode($content). Luego, al realizar la conexión he puesto mysql_set_charset('utf8'), y en phpmyadmin está puesto como cotejamiento "utf8_swedish_ci".

¿Qué cojones falla?

LOc0

Escríbete en un fichero de texto plano desde php la consulta que le envías a mysql por si acaso le estás enviando caracteres "extraños"...

Me tengo que pirar, cuando vuelva (2 horas) me paso a ver si lo has solucionado. ¡Ánimo!

Salu2 ;)

1 respuesta
RaymaN

#8 mil gracias! Estaba pasándole dos putos " y no me he dado cuenta hasta que no he hecho eso. Me apunto ese truco para futuras ocasiones, es un jodido coñazo el tema de la codificación de caracteres a la hora de programar.

1 1 respuesta
LOc0

#9 De nada, son "bastantes" años con el pehachepé...

Por cierto, como veo que estás trasteando con Curl, un poquito de "spam" por si te viene bien -> www.mediavida.com/foro/9/fastcurl-388430

Salu2 ;)

1 1 respuesta
RaymaN

#10 recuerdo que lo vi hace tiempo pero lo olvidé por completo cuando empecé este proyecto. Voy a empezar a utilizarlo porque parece bastante más sencillo aunque yo solo necesito obtener el código de una url, lo más básico de curl xD

Por cierto aprovechando este tema, ¿hay alguna forma más bonita y limpia de obtener datos de un código fuente? Es decir, si al sacar el código con curl quiero obtener un nombre que se encuentra dentro de una tabla y con atributos de enlace y tal. Yo lo hago cortando cadenas y haciendo explodes a saco y me parece de lo más guarro xD

1 respuesta
LOc0

#11 Para hacer web scraping o tiras de Regex o tiras de Regex ;)

//Mostrar usuarios online en MV:

require_once('FastCurl.inc');

$fc = new FastCurl();
$fc->url = 'http://www.mediavida.com';
$fetch = $fc->fetch('/Online\: +?(\d+)/i');
echo "Usuarios online en MV: {$fetch[1]}";
unset($fc);

Salu2 ;)

1 respuesta
RaymaN

#12 putas regex, debería haber asignatura de esto en la carrera, son jodidas de entender xD

Por cierto leí hace poco que si trabajas con bastantes líneas de código, regex es más lento que ir haciendo explodes y str_replaces, aunque con esto último necesitas más líneas para obtener lo que buscas. No sé qué camino es el idóneo en mi caso, tendré que probar ambos métodos.

1 respuesta
LOc0

#13
Jajaja, ya ves. En mi caso las vi en autómatas y luego en compiladores, pero de forma "teórica" (como la mayoría de cosas de la carrera, por otro lado). De todas formas, no son tan jodidas, en serio.

Lo que dices de la velocidad es cierto a medias, como casi siempre. Es cierto, que parsear la regex y compilarla suele ser más lento que usar funciones que buscan literales, pero una vez compilada (y "cacheada" si usas alguna extensión de PHP) la expresión regular "vuela" y para ciertos problemas de búsquedas ahorran un montón de código.

Hazme caso, aprende a usarlas.

Edito: http://simplehtmldom.sourceforge.net/ (Es un parser de HTML en PHP).

Salu2 ;)

Usuarios habituales

  • LOc0
  • RaymaN
  • HiGher
  • suaveSHOW
  • BLZKZ