кавички
6 отговора
200 прегледа
кавички
Здравейте не съм много добър с 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());
Какво трябва да направя за да не ми съсипва куерито
Благодаря за помоща
Форма която попълва потребителя.
Данните от формата се записват в 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());
Какво трябва да направя за да не ми съсипва куерито
Благодаря за помоща
Re: кавички
Проблема ти е в кавичките, които се подават в стойността на променливите. Използвай addslashes() / stripslashes() функциите или направо mysql_escape_string() за да подготвиш даден стринг за mysql_query()
Успех.
Успех.
Re: кавички
Всяка променлива по отделно е обработена с stripslashes преди insert into...
Ако съм разбрал правилно при запис трябва да използвам addslashes а при четене stripslashes за всяка променлива.
function safesql($string)
{
settype($string,"string");
while($string!=stripslashes($string)
$string=stripslashes($string);
return(addslashes($string));
}
Или трябва да го направя за целия стринг ????
Ако съм разбрал правилно при запис трябва да използвам addslashes а при четене stripslashes за всяка променлива.
function safesql($string)
{
settype($string,"string");
while($string!=stripslashes($string)
$string=stripslashes($string);
return(addslashes($string));
}
Или трябва да го направя за целия стринг ????
Редактирано от StS на
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
<?php
$item = "Zak's Laptop";
$escaped_item = mysql_escape_string($item);
printf("Изход: %s\n", $escaped_item);
?>
Изход: Zak\'s Laptop
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
$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
Re: кавички
magic_quotes_gpc On On
magic_quotes_runtime Off Off
magic_quotes_sybase Off Off
При мен положението е такова
Благодаря за съветите :)
magic_quotes_runtime Off Off
magic_quotes_sybase Off Off
При мен положението е такова
Благодаря за съветите :)