За последние 24 часа нас посетили 66003 программиста и 1625 роботов. Сейчас ищут 1140 программистов ...

Почему записывается только первая строчка

Тема в разделе "PHP для новичков", создана пользователем tmpnik, 16 май 2016.

  1. tmpnik

    tmpnik Активный пользователь

    С нами с:
    21 мар 2011
    Сообщения:
    50
    Симпатии:
    0
    Запускаю программу на выполнение, но записывается только первая строка файла, как можно изменить программу, чтоб записывался весь файл?
    PHP:
    1. <?php
    2. $server = "localhost";
    3. $database = "test2";
    4. $username = "root";
    5. $password = "";
    6. $per = file_get_contents('c:\x.txt');
    7. echo $per;
    8. if(!mysql_connect($server,$username,$password)) exit(mysql_error());
    9. if (!mysql_select_db($database)) exit(mysql_error());
    10. $query = "UPDATE `users` SET `test_field`='$per' WHERE 1";
    11. $result = mysql_query($query) or die ( "Error : ".mysql_error());
    12. ?>
     
  2. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Какой тип у`test_field`?
     
    tmpnik нравится это.
  3. tmpnik

    tmpnik Активный пользователь

    С нами с:
    21 мар 2011
    Сообщения:
    50
    Симпатии:
    0
    mediumtext
     
  4. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    А echo $per; выводит весь текст?
     
    tmpnik нравится это.
  5. tmpnik

    tmpnik Активный пользователь

    С нами с:
    21 мар 2011
    Сообщения:
    50
    Симпатии:
    0
    Да, echo $per; выводит весь текст
    --- Добавлено ---
    может причина в тексте?
    <p><span style="font-size: 14pt;"><strong> На *********** г. принято ******:</strong></span></p>
    <p><span style="font-size: 14pt;"> </span></p>
    <p><span style="font-size: 12pt;">1. ******** - 2 </span></p>
    <p> </p>
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @tmpnik попробуй экранировать $per, чтобы его содержание не ломало правильный синтаксис sql запроса.
    Сделай
    PHP:
    1. echo "UPDATE `users` SET `test_field`='$per' WHERE 1";
    Посмотри какой запрос получился, можешь его сюда выложить.

    Функцию mysql лучше заменить на mysqli или pdo, так как в PHP7 уже удалили mysql.
    Вот документация https://secure.php.net/manual/ru/function.mysql-real-escape-string.php чтобы понять как экранировать.

    Так содержание переменной $per не должно нарушать запрос
    PHP:
    1. "UPDATE `users` SET `test_field`='".mysql_real_escape_string($per)."' WHERE 1";
     
    tmpnik нравится это.
  7. tmpnik

    tmpnik Активный пользователь

    С нами с:
    21 мар 2011
    Сообщения:
    50
    Симпатии:
    0
    Спасибо, но не могу понять, почему не получается, может из-за того, что база на mysqli и надо именно её функции
    текст
    12345
    56789
    нормально записывается, а текст
    <p><span style="font-size: 14pt;"><strong> ***********:</strong></span></p>
    <p><span style="font-size: 14pt;"> </span></p>
    всего одна строчка....., даже по варианту экранирования..
     
  8. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Это вы откуда такую чушь взяли? Сервер баз данных называется MySQL, выпускается (сейчас) компанией Oracle, прямого отношения к РНР не имеет. С ней можно работать на любом языке, PHP не единственный. Для того, чтобы удобно было работать с сервером MySQL их программы на РНР, был написаны несколько библиотек (вы бы не хотели работать с сервером базы данных как с сокетом). Первая библиотека называлась так же, как и сервер, mysql, а затем были выпущены и постепенно заменили эту библиотеку ещё две - mysqli (только для MySQL) и PDO (она может работать с несколькими серверами баз данных). Так что ошибка не может быть из-за библиотеки. Покажите вариант с экранированием, а также напечатайте запрос, который получается после экранирования и дайте его сюда, как советует denis01
     
    tmpnik нравится это.
  9. tmpnik

    tmpnik Активный пользователь

    С нами с:
    21 мар 2011
    Сообщения:
    50
    Симпатии:
    0
    Спасибо за разъяснение, будем знать... но при установки CMS, например джумлы, написано, укажите тип базы данных(Database type), поэтому для новичков это два типа бд, для остальных, две библиотеки...:))
    файл
    <p><span style="font-size: 14pt;"><strong> ***********:</strong></span></p>
    <p><span style="font-size: 14pt;"> </span></p>

    PHP:
    1. $query = "UPDATE `users` SET `test_field`='".mysql_real_escape_string($per)."' WHERE 1";
    2. echo $query;
    скриншот этой команды...
    [​IMG]
     
  10. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    А по куда записывается первая строка?
    --- Добавлено ---
    какие два типа бд, это же функции php при чём тут бд...
     
    tmpnik нравится это.
  11. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Так, это ты похоже вывел не исходный код страницы, поэтому теги пропали. Выведи исходный код, чтоб убедиться, что всё на месте (Ctrl+U)
     
    tmpnik нравится это.
  12. tmpnik

    tmpnik Активный пользователь

    С нами с:
    21 мар 2011
    Сообщения:
    50
    Симпатии:
    0
    UPDATE `users` SET `test_field`='<p><span style=\"font-size: 14pt;\"><strong> ***********:</strong></span></p>\r\n<p><span style=\"font-size: 14pt;\"> </span></p>\r\n' WHERE 1
    И вот его скриншот,
    [​IMG]
    В таблицу записалось
    <p><span style="font-size: 14pt;"><strong>
     
    #12 tmpnik, 17 май 2016
    Последнее редактирование: 17 май 2016
  13. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Как проверяешь? Запрос выглядит правильно. И покажи create table
     
    tmpnik нравится это.
  14. tmpnik

    tmpnik Активный пользователь

    С нами с:
    21 мар 2011
    Сообщения:
    50
    Симпатии:
    0
    Захожу в PHPMyAdmin и смотрю, что записалось... Create это будет создана новая таблица, структура таблицы с которой я работаю
    [​IMG]
    --- Добавлено ---
    Я извиняюсь, вы всё советовали верно, сейчас перебил текст вручную, всё стало нормально, осталось понять почему тот текст не вставлялся (он был взятс хостинга исходный код материала в админки сайта CMS джумла), а тот же текст набранный на локал хост вставляется нормально, но причина в общем-то понятно, надо как-то конвертировать текст....
     
  15. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Сделай запрос
    Код (Text):
    1. select test_field from users limit 1
    в phpMyAdmin, и покажи, чего выведет. Что-то ты не то смотришь, мне кажется. При этой структуре оно не может так работать, как ты описываешь. Компьютер работает, чудес не бывает
     
    tmpnik нравится это.
  16. tmpnik

    tmpnik Активный пользователь

    С нами с:
    21 мар 2011
    Сообщения:
    50
    Симпатии:
    0
    всё дело в файле(не знаю почему), я его прикрепил...
     

    Вложения:

    • x2.txt
      Размер файла:
      125 байт
      Просмотров:
      5
  17. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Попробуй создать другой файл с html тегами и переносами строк, и посмотри на нём сработает или нет.
     
  18. tmpnik

    tmpnik Активный пользователь

    С нами с:
    21 мар 2011
    Сообщения:
    50
    Симпатии:
    0
  19. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Смотри в базах хранятся строки они там не прерывные тебе нужно в базе хранить всё как одну строку поэтому когда ты передаёшь файл в php сделай его одной строкой!
    А когда будет выводится он засчёт html тегов встанет уже как надо на странице.
    https://php.ru/forum/threads/tekst-v-odnu-stroku.30596/

    PHP:
    1. $what=str_replace(array("\r","\n"),'',$where);
     
    tmpnik нравится это.
  20. tmpnik

    tmpnik Активный пользователь

    С нами с:
    21 мар 2011
    Сообщения:
    50
    Симпатии:
    0
    спасибо...