Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: SQL update tekstillä jossa " ja '

runeberg [10.04.2010 12:41:54]

#

Moi
Luulen että vastaava ongelma on ollut monella, mutta en löytänyt oikein vastaavaa:

ongelmanani on, että tarvisin sql update lauseen joka korvaa tekstin jossa on ' ja " merkkejä
eli:

$updateString="UPDATE product SET ProductDescription = \"".$text."\" WHERE OID = ".$oid;

Olen myös koittanut:

$updateString="UPDATE product SET ProductDescription = '".$text."' WHERE OID = ".$oid;

Kuten myös ilman mitään hipsuja.
Eli tuo $text sisältää paljon tekstiä, jonka seassa on " ja ' merkkejä, jolloin kysely ilmeisesti katkeaa, koska tulee virhe ilmoitus, Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 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 'w x 1 1/4" h (2.54 cms x 3.18 cms)

Blaze [10.04.2010 12:48:54]

#

A-I-N-A eskapeta (hei, onks tuolle muuten jotain hyvää suomennosta?) SQL-lauseisiin liitettävät muuttujat! https://www.php.net/manual/en/function.mysql-real-escape-string.php

Macro [10.04.2010 12:53:00]

#

<?php
$updateString = "UPDATE product SET ProductDescription = \"" . mysql_real_escape_string($text) . "\" WHERE OID = " . mysql_real_escape_string($oid);

trilog [10.04.2010 13:18:51]

#

Käytät nähtävästi PDO:ta, joten PDO:lla homma hoituu näin:

<?php
$q = $db->prepare("UPDATE product SET ProductDescription = ? WHERE OID = ?");
$q->bindParam(1, $text, PDO::PARAM_STR);
$q->bindParam(2, $oid, PDO::PARAM_INT);

Kaikki kyselyt, joissa tarvitaan muuttujia on hyvä tehdä tuolla PDO:n preparella.

runeberg [10.04.2010 13:40:22]

#

Jes, kiitos vastauksista.

Käytän tosiaan PDO:ta, mutta en ole vielä sisätänyt kaikkia sen hienouksia. Käytän kyllä preparea, mutta ole lyönyt siihen suoraan kyselyn, enkä käyttänyt noita bindingejä.

Matso [11.04.2010 14:23:04]

#

runeberg kirjoitti:

Käytän tosiaan PDO:ta, mutta...

Kantsii varmaan tutustua siihen vähän lisää.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta