Autor Zpráva
radvis
Profil
Ahoj, snažím se do db uložit:

$text = "Uživatel s přezdívkou $pnick Vás žádá o zařazení mezi přátele. <a href='sadasd'>Příjmout</a> | <a href='sadsa'>Odmítnout</a>";
$text = addslashes($text);
//echo $text; exit;
$this->db->query("INSERT INTO users_messages (msg_from, msg_to, date, text, title) VALUES('$pid', '$id', '$date', '$text', '$title') ");


A u toho textu mi to pořád hází:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sadasd\'>Příjmout</a> | <a href=\\'sadsa\'>Odmítnout</a>', 'Žádost o přát' at line 1

Díky!
Davex
Profil
A když místo funkce addslashes() použiješ funkci mysql_real_escape_string(), tak je to lepší?
radvis
Profil
Bohužel, není, už jsem to zkoušel.
Alphard
Profil
radvis:
Jakou podobu vám to vypíše při odkomentování 3. řádku?
Vzhledem k <a href=\\'sadsa\'>Odmítnout je tam zdvojené \ a apostrof ukončí retězec.

Mimochodem, používání parametrických dotazů by tyhle problémy vyřešilo.
radvis
Profil
Vypíše to jak má. "Uživatel s přezdívkou daddy Vás žádá o zařazení mezi přátele. <a href=\'sadasd\'>Příjmout</a> | <a href=\'sadsa\'>Odmítnout</a>"
Alphard
Profil
A co tohle?
$this->db->query($q = "INSERT INTO users_messages (msg_from, msg_to, date, text, title) VALUES('$pid', '$id', '$date', '$text', '$title') ");
echo $q;

A rovnou připojím dotaz, jestli je vaše třída pro přístup k databázi důveryhodná. Nedělá tam bordel?
radvis
Profil
Vypíše to zase "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sadasd\'>Příjmout</a> | <a href=\\'sadsa\'>Odmítnout</a>', 'Žádost o přát' at line 1", ale když to dám:

$q = "INSERT INTO users_messages (msg_from, msg_to, date, text, title) VALUES('$pid', '$id', '$date', '$text', '$title') ";
     echo $q; exit;


tak to vypíše:

INSERT INTO users_messages (msg_from, msg_to, date, text, title) VALUES('1', '3', '1282997534', 'Uživatel s přezdívkou xxx Vás žádá o zařazení mezi přátele. Příjmout | Odmítnout', 'Žádost o přátelství')
Davex
Profil
Vypadá to jako CodeIgniter - zkoušel jsi metodu $this->db->escape()?

Nebo rovnou $this->db->insert().


Doplněno: Aby se vypsal celý dotaz, tak by se měl výstup ošetřit: echo htmlspecialchars($q).
radvis
Profil
Nezkoušel to escape neznám a ten insert() bych dal, ale zas mít každý sql kód jiný, to by nevypadalo moc dobře
radvis
Profil
Davex:
Tak ten insert() to řeší tak to tak asi nechám. htmlspecialchars() ti pokud se nemýlím ošetří tak, že to ti vypíše "bla <div> blabla" a to bymi pak bylo kničemu tam psát <a href=""></a>
Davex
Profil
radvis:
htmlspecialchars() ti pokud se nemýlím ošetří tak, že to ti vypíše "bla <div> blabla"
Nemýlíš se. Cílem bylo, vypsat úplnou podobu toho nefunkčního dotazu bez interpretace HTML kódu prohlížečem.
radvis
Profil
Nakonec jsem to udělal celé jinak, díky!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0