Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: Kabutės įvedant į MySQL

Parašė citni· 2012 Bir. 19 18:06:46
#1

Taigi, susikūręs teksto įvedimo į duomenų bazę formą, bandau įvesti tekstą su kabutėm (pvz.: Don't Stop) ir man išmeta tokią klaidą:
"Error: 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 '','assdad')' at line 3"

Štai kodo fragmentas:


<?php
include 'connect.php';
$con = mysql_connect ("$db_host","$db_username","$db_pass") or die ("Could nor connect to <span style="border-bottom: 1px dotted black;">MySQL</span>");
@mysql_select_db("$db_name") or die ("No database");
 
$sql = "INSERT INTO films_trailers (id, name, link)
VALUES
('','".$_POST['name']."','".$_POST['link']."')";
 
if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "<center><b>Film was successfuly added!</b></center>";
echo "<center><b><a href='index.php'>Back to Home</a></b></center>";
 
mysql_close($con);
 
?>

Parašė Faitas.· 2012 Bir. 19 19:06:28
#2

Taip yra todėl, kad tu SQL užklausoje taip padarai:


'".$_POST['name']."'


O jei tas name kintamasis turėtų reikšmę Don't Stop, tai gautųsi maždaug taip:


'Don't stop'


Mestų klaidą, nes tokių pačių dviejų vientisų kabučių negali būti, reiktų escapinti su backslah'u, maždaug taip:


$name = str_replace("'", "\'", $_POST['name']);


Šitą prieš užklausos formatavimą pridėk, turėtų suveikti. ;)

Redagavo Faitas.· 2012 Bir. 19 19:06:08

Parašė citni· 2012 Bir. 19 19:06:49
#3

Suveikė.
Didžiulis ačiū!

Parašė KiraLT· 2012 Bir. 19 22:06:39
#4

Trumpas paaiškinimas: norint kad veiktu atitinkami simboliai (pvz.: ", ', \...) kaip paprastas tekstas prieš juos dedama \ simbolis. O Faitas. duota funkcija kaip tik prideda \ simboli prieš ' simboli.