Форумы портала PHP.SU » » Работа с СУБД » 1.<textarea> и mysql_real_escape_string

Страниц (1): [1]
 

1. scurra - 26 Ноября, 2016 - 20:08:48 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. echo $_POST["textvalu"];
  3. $ttext=$_POST["textvalu"];
  4. $utext="777".mysql_real_escape_string($ttext);
  5. mysql_query("INSERT INTO `111`(`text`) VALUES ('$utext')");


Данный кусок кода записывает в БД только "777", но выводит в первой строке именно тот текст, что был введен в форме отправки. В общем mysql_real_escape_string обрезает полностью то, что пришло из формы в <textarea></textarea>.
Какие идеи?
2. Denkill - 27 Ноября, 2016 - 10:53:24 - перейти к сообщению
Скорее всего $_POST['textvalu'] пуст. Иначе не может быть.
3. Строитель - 27 Ноября, 2016 - 12:33:57 - перейти к сообщению
scurra пишет:
Какие идеи?

1. Распечатать строку $utext = "777". mysql_real_escape_string($ttext);
PHP:
скопировать код в буфер обмена
  1. echo '<pre>'; var_dump($utext); echo '</pre>';


2. Проверить тип данных поля, в которое записывается строка из переменной $utext, и его размер.
4. scurra - 27 Ноября, 2016 - 13:33:05 - перейти к сообщению
Denkill пишет:
Скорее всего $_POST['textvalu'] пуст. Иначе не может быть.

первая строчка кода выводит $_POST["textvalu"] на страницу нормально.
(Добавление)
Строитель пишет:
scurra пишет:
Какие идеи?

1. Распечатать строку $utext = "777". mysql_real_escape_string($ttext);
PHP:
скопировать код в буфер обмена
  1. echo '<pre>'; var_dump($utext); echo '</pre>';


2. Проверить тип данных поля, в которое записывается строка из переменной $utext, и его размер.


string(3) "777"
в БД $utext пишется в VARCHAR(1024)
вот форма

CODE (html):
скопировать код в буфер обмена
  1. <form action="contacts.php" method="post" enctype="multipart/form-data">
  2. <textarea name="textvalu" cols="78" rows="20" maxlenght="1024"></textarea><br><br>
  3. <center><input type="file" name="filename"><br><br>
  4. <input type="submit" value="Загрузить"><br></center>
  5. </form>


проблема в том, что в первой строке кода $_POST["textvalu"] содержит введенные в форме данные, а после mysql_real_escape_string(), они исчезают сказочным образом.

Проверил - mysql_real_escape_string() с любой строковой переменной на выходе дает "ничего".

PHP Version 5.6.24-0+deb8u1
в этой версии может какие-то траблы с этой функцией?
(Добавление)
РЕШЕНО: функция mysql_real_escape_string нужно использовать ПОСЛЕ установления соединения с БД, а не ДО.

 

Powered by ExBB FM 1.0 RC1