Всем привет, у мя такая проблема, может кто подскажет как разрешить? Пишу следующее: PHP: <?php $sql="update `chics_text` set `razdel`='$_POST[razdel]', `ru_pod_razdel`='$_POST[ru_pod_razdel]', `en_pod_razdel`='$_POST[en_pod_razdel]', `url`='$_POST[url]', `text`='$_POST[text]' where `id` = '$_POST[id]'"; mysql_query($sql,$conn) or die('Какой же я ___: ['.$sql.'] - '.mysql_error()); ?> при обработке выводит ошибку: Код (Text): 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 Таблица в БД следующая Код (Text): `id` int(11) NOT NULL auto_increment, `razdel` varchar(255) default NULL, `ru_pod_razdel` varchar(255) default NULL, `en_pod_razdel` varchar(255) default NULL, `dopoln` varchar(255) default NULL, `url` varchar(255) default NULL, `text` text, PRIMARY KEY (`id`) В $_POST[text] у меня содержится HTML код веб-страници, может у меня из-за этого какие-то проблемы? Умные головы, подскажите ктонить…? Заранее благодарен!!!
Для строковых переменных нужно использовать функцию mysql_escape_string Например, .....`razdel`='".mysql_escape_string($_POST['razdel'])."'.....
А ты что хотел? Как собираешься вставить такую строку в запрос? Это строка ' содержит кавычку Без экранирования будет такой запрос txt='Это строка ' содержит кавычку' Поэтому нужно экранировать кавычки txt='Это строка \' содержит кавычку'
Понял, у тебя вставляется именно символы \' Это получается, потому что PHP сам экранирует символы. Надо в php.ini посмотреть параметры magic_quotes_runtime и magic_quotes_gpc и отключить их.
Mavir То есть по этому у меня и получается, что когда я что-то делаю на домашнем сервере у мя всё нормально работает, а на сервере в Интернете у меня такой глюк, значит в Интернете он сам экранирует их, ты к этому ведешь? вот его инфа, и теперь как мне тогда сделать так чтобы у меня и на домашнем компе и в инете работало всё одинаково?
Pasha отслеживать, включена ли опция magic_quotes_gpc в php, и, в зависимости от этого, экранировать или не экранировать кавычки.
simpson спс вроде понял, значит так? PHP: <?php $sql="update `chics_text` set `text`='".mysql_escape_string($_POST['text'])."' where `id` = '$_POST[id]'"; $sql1="update `chics_text` set `text`='$_POST[text]' where `id` = '$_POST[id]'"; if (get_magic_quotes_gpc()) { mysql_query($sql1,$conn) or die('во блин ['.$sql1.'] - '.mysql_error()); }else{ mysql_query($sql,$conn) or die('во блин ['.$sql.'] - '.mysql_error()); } ?>
Pasha идею ты понял, но лучше бы это все упростить. например, так: PHP: <?php function escape($string) { if (1 == get_magic_quotes_gpc()) return $string; return mysql_escape_string($string); } $sql = 'update `chics_text` set `text`="' . escape($_POST['text']) . '" where `id`="' . escape($_POST['id']) . '"'; mysql_query($sql); ?>
simpson спс. PHP: <?php function escape($string) { if (1 == get_magic_quotes_gpc()) {return $string;}else{ return mysql_escape_string($string); } } $sql = 'update `chics_text` set `text`="' . escape($_POST['text']) . '" where `id`="' . escape($_POST['id']) . '"'; mysql_query($sql); ?> :roll: блин, откуда вы стока инфы знаете? или просто по опыту сами с такими вещами сталкивались? где можно путную литературу почитать по настройкам? чтобы в другой раз проще было?
Хы.. мне кажется, тут многие по этим граблям проходили... =) я в том числе. PS - Когда надоело плодить свои функции для каждой БД, прикрутил плейсхолдеры...[/php]
Интерестная фишка получается, есть строка формы: PHP: <? echo $langua['stat_nam'].'<br/><input type="text" name="name" maxlength="255" value="'.$row['name'].'"><br/>'; ?> $row['name'] =занчения из базы данных типа fjkjklf"sdsds'sdfsd но он выводит тока fjkjklf что делать?
Все правильно у тебя выводится, посмотри исходный код И вот что там увидишь Код (Text): <input type="text" name="name" maxlength="255" value="fjkjklf"sdsds'sdfsd"> Ошибка ясна?
а для решения первой проблемы, на самом деле, надо было не код с if-ами делать, а поместить в корень сайта .htaccess со строчкой php_flag magic_quotes_gpc 0
Так что мне с этим то делать? Код (Text): <input type="text" name="name" maxlength="255" value="fjkjklf"sdsds'sdfsd">