Запускаю программу на выполнение, но записывается только первая строка файла, как можно изменить программу, чтоб записывался весь файл? PHP: <?php $server = "localhost"; $database = "test2"; $username = "root"; $password = ""; $per = file_get_contents('c:\x.txt'); echo $per; if(!mysql_connect($server,$username,$password)) exit(mysql_error()); if (!mysql_select_db($database)) exit(mysql_error()); $query = "UPDATE `users` SET `test_field`='$per' WHERE 1"; $result = mysql_query($query) or die ( "Error : ".mysql_error()); ?>
Да, 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>
@tmpnik попробуй экранировать $per, чтобы его содержание не ломало правильный синтаксис sql запроса. Сделай PHP: 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: "UPDATE `users` SET `test_field`='".mysql_real_escape_string($per)."' WHERE 1";
Спасибо, но не могу понять, почему не получается, может из-за того, что база на mysqli и надо именно её функции текст 12345 56789 нормально записывается, а текст <p><span style="font-size: 14pt;"><strong> ***********:</strong></span></p> <p><span style="font-size: 14pt;"> </span></p> всего одна строчка....., даже по варианту экранирования..
Это вы откуда такую чушь взяли? Сервер баз данных называется MySQL, выпускается (сейчас) компанией Oracle, прямого отношения к РНР не имеет. С ней можно работать на любом языке, PHP не единственный. Для того, чтобы удобно было работать с сервером MySQL их программы на РНР, был написаны несколько библиотек (вы бы не хотели работать с сервером базы данных как с сокетом). Первая библиотека называлась так же, как и сервер, mysql, а затем были выпущены и постепенно заменили эту библиотеку ещё две - mysqli (только для MySQL) и PDO (она может работать с несколькими серверами баз данных). Так что ошибка не может быть из-за библиотеки. Покажите вариант с экранированием, а также напечатайте запрос, который получается после экранирования и дайте его сюда, как советует denis01
Спасибо за разъяснение, будем знать... но при установки CMS, например джумлы, написано, укажите тип базы данных(Database type), поэтому для новичков это два типа бд, для остальных, две библиотеки...) файл <p><span style="font-size: 14pt;"><strong> ***********:</strong></span></p> <p><span style="font-size: 14pt;"> </span></p> PHP: $query = "UPDATE `users` SET `test_field`='".mysql_real_escape_string($per)."' WHERE 1"; echo $query; скриншот этой команды...
А по куда записывается первая строка? --- Добавлено --- какие два типа бд, это же функции php при чём тут бд...
Так, это ты похоже вывел не исходный код страницы, поэтому теги пропали. Выведи исходный код, чтоб убедиться, что всё на месте (Ctrl+U)
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 И вот его скриншот, В таблицу записалось <p><span style="font-size: 14pt;"><strong>
Захожу в PHPMyAdmin и смотрю, что записалось... Create это будет создана новая таблица, структура таблицы с которой я работаю --- Добавлено --- Я извиняюсь, вы всё советовали верно, сейчас перебил текст вручную, всё стало нормально, осталось понять почему тот текст не вставлялся (он был взятс хостинга исходный код материала в админки сайта CMS джумла), а тот же текст набранный на локал хост вставляется нормально, но причина в общем-то понятно, надо как-то конвертировать текст....
Сделай запрос Код (Text): select test_field from users limit 1 в phpMyAdmin, и покажи, чего выведет. Что-то ты не то смотришь, мне кажется. При этой структуре оно не может так работать, как ты описываешь. Компьютер работает, чудес не бывает
Да, я уже создал и отработал, дело именно в том файле, который прикрепил, просто хотел знать, на какие спецсимволы в следующий раз проверять файл, чтоб не было проблем..., т.е. если вы используете функцию file_get_contents, то проверьте, чтоб не было в файле таких-то спец символов...
Смотри в базах хранятся строки они там не прерывные тебе нужно в базе хранить всё как одну строку поэтому когда ты передаёшь файл в php сделай его одной строкой! А когда будет выводится он засчёт html тегов встанет уже как надо на странице. https://php.ru/forum/threads/tekst-v-odnu-stroku.30596/ PHP: $what=str_replace(array("\r","\n"),'',$where);