кавички

6 отговора 200 прегледа
#1

кавички

Здравейте не съм много добър с php но съм се хванал сам да си правя една страничка и ми възниква следния проблем:

Форма която попълва потребителя.
Данните от формата се записват в MySQL база.
Всичко е наред докато в някое от полетата не бъде въведен апостроф, следва грешка от рода:
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 'проба', 'още', 'qqq', '1777e2e273f8a42a4228e9e699fac

стринга изглежда така:

$sql = "INSERT INTO users (
commpany,
first_name,
last_name,
email_address,
signup_date)
VALUES(
'$commpany',
'$first_name',
'$last_name',
'$email_address',
now())";
mysql_query($sql)
or die (mysql_error());


Какво трябва да направя за да не ми съсипва куерито


Благодаря за помоща

Отговор
в отговор на StS #2

Re: кавички

[линк]
[линк]

-----------------------
гърбавия, ковчег ще го изправи
Отговор
в отговор на StS #3

Re: кавички

Проблема ти е в кавичките, които се подават в стойността на променливите. Използвай addslashes() / stripslashes() функциите или направо mysql_escape_string() за да подготвиш даден стринг за mysql_query()

Успех.

Отговор
в отговор на mr.vain #4

Re: кавички

Всяка променлива по отделно е обработена с stripslashes преди insert into...

Ако съм разбрал правилно при запис трябва да използвам addslashes а при четене stripslashes за всяка променлива.

function safesql($string)
{
settype($string,"string");
while($string!=stripslashes($string)
$string=stripslashes($string);
return(addslashes($string));
}


Или трябва да го направя за целия стринг ????

Редактирано от StS на

Отговор
в отговор на StS #5

Re: кавички

Всяка променлива е обработи с addslashes, не със stripslashes. Или най-добре с mysql_escape_string:

<?php
$item = "Zak's Laptop";
$escaped_item = mysql_escape_string($item);
printf("Изход: %s\n", $escaped_item);
?>

Изход: Zak\'s Laptop

Отговор
в отговор на StS #6

Re: кавички

stripslashes се използва, когато искаш да изведеш стринг, който преди това е бил обработен с addslashes:
$str = "b's";
$str = addslashes($str);
echo $str; // ще се изведе b\'s
echo stripslashes($str); // ще се изведе b's

обаче внимавай - при някои php конфигурации може да е включена php.ini директивата magic_quotes_gpc - т.е. за GET, POST и COOKIE променливи escape-ването става автоматично. тогава не бива да се прилага addslashes. универсалното решение е:
if (!get_magic_quotes_gpc()) {
$str = addslashes($str);
}
// SQL INSERT statement follows

Отговор
в отговор на neuroshocked #7

Re: кавички

magic_quotes_gpc On On
magic_quotes_runtime Off Off
magic_quotes_sybase Off Off

При мен положението е такова

Благодаря за съветите :)

Отговор