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)
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
<?php $updateString = "UPDATE product SET ProductDescription = \"" . mysql_real_escape_string($text) . "\" WHERE OID = " . mysql_real_escape_string($oid);
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.
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ä.
runeberg kirjoitti:
Käytän tosiaan PDO:ta, mutta...
Kantsii varmaan tutustua siihen vähän lisää.
Aihe on jo aika vanha, joten et voi enää vastata siihen.