Вопрос № 130636: И снова здравствуйте!
Натолкнулся на интересный глюк. Пара строк:
$message=(isset($_POST['message']))?$_POST['message']:"";
session_start();
if (!isset($_SESSION['message'])) $_SESSION['message']="";
...Вопрос № 130664: Здравствуйте!
Не является ли символ одинарной кавычки проблемным при хранении его в MySQL? Пользуюсь addslashes(), но при просмотре ячеек через phpmyadmin видна неэкранированная кавычка. На самом деле она хранится со слешем или нет? Т.е., во...Вопрос № 130723: День добрый.
Сказите, есть ли в php функции для работы с базами даных, отличных от MySQL?
Скажем dBase paradox.
Дело в том, что в учебнике php 3.0 я нашел эти функции, но почему-то они не работают (php выводит сообщение, о попытке вызова ...
Вопрос № 130.636
И снова здравствуйте!
Натолкнулся на интересный глюк. Пара строк:
$message=(isset($_POST['message']))?$_POST['message']:"";
session_start();
if (!isset($_SESSION['message'])) $_SESSION['message']="";
Они не работают. POST передаётся, но не присваивается переменной (первая строка). Если же в такой последовательности:
session_start();
$message=(isset($_POST['message']))?$_POST['message']:"";
if (!isset($_SESSION['message'])) $_SESSION['message']="";
Отвечает: HookEst
Здравствуйте, Прим Палвер!
Это значит, что у Вас включен regiser globals.
дело в том, что в момент session_start(), при включенном register globals, не только создается и инициализируется массив $_SESSION, но и создаются-инициализируются переменные зарегестрированные в сессии.
$message=(isset($_POST['message']))?$_POST['message']:"";
//создалась переменная $message со значением или POST['message'] или ""
session_start();
//здесь, если включен register globals и в сессии зарегистрированна переменная c именем message, то значение в переменной $message - перезаписывается значением, находящимся в сессии. т.е. если в POST было значение, оно было записано в $message - но сейчас оно теряется.
if (!isset($_SESSION['message'])) $_SESSION['message']="";
...
Успехов.
Ответ отправил: HookEst (статус: Специалист)
Ответ отправлен: 07.04.2008, 08:45 Оценка за ответ: 5 Комментарий оценки: Спасибо. Этого я и боялся. Прийдётся все разносортные переменные переименовывать в совершенно непохожие. А жаль.
Вопрос № 130.664
Здравствуйте!
Не является ли символ одинарной кавычки проблемным при хранении его в MySQL? Пользуюсь addslashes(), но при просмотре ячеек через phpmyadmin видна неэкранированная кавычка. На самом деле она хранится со слешем или нет? Т.е., возможно, phpmyadmin показывает без слеша, который на самом деле там есть?
P.S. С get_magic_quotes_gpc() знаком. Интересует исключительно поставленный вопрос.
Отвечает: Миленин Александр
Здравствуйте, Прим Палвер!
Спец символы не являются проблемой при хранении, они являются проблемой при добавлении. В базе ковычки хранятся без слэша, если он не добавлен "вручную".
Ответ отправил: Миленин Александр (статус: Студент)
Ответ отправлен: 05.04.2008, 14:30 Оценка за ответ: 5 Комментарий оценки: Тогда как лучше готовить к вставке в БД? mysql_real_escape_string и addslashes - оба нужны?
Вопрос № 130.723
День добрый.
Сказите, есть ли в php функции для работы с базами даных, отличных от MySQL?
Скажем dBase paradox.
Дело в том, что в учебнике php 3.0 я нашел эти функции, но почему-то они не работают (php выводит сообщение, о попытке вызова неизвестной фенкции)
И попутный вопрос:
Чем MySQL отличается от PostgreSQL ? (В двух словах)
Отправлен: 05.04.2008, 21:10
Вопрос задал: Ігор (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 5)
Отвечает: Иван Сергеевич
Здравствуйте, Ігор!
Дополнительные модули PHP (в том числе и модули работы с базами данных) подключаются в файле php.ini, раздел DYNAMIC EXTENSIONS. Там находятся строки вида:
extension=php_dbase.dll
extension=php_mssql.dll
По умолчанию большинство из них закомментированы (начинаются с символа точки с запятой). Поэтому надо убрать точки с запятой у тех библиотек, которые Вам понадобятся. Только убедитесь, что папка дополнительных библиотек (параметр extension_dir) указан правильно и нужные модули там присутствуют.
Ответ отправил: Иван Сергеевич (статус: 7-ой класс)
Ответ отправлен: 05.04.2008, 21:29
Отвечает: Miklucho
Здравствуйте, Ігор!
Дело в том, что прежде чем воспользоваться функциями для работы с БД отличных от MySQL (да и для нее вообщем-то тоже) необходимо подключить библиотеку для данной БД. Делается это снятием комментария с соотвествующей сроки в файле php.ini. Например для PostgreSQL это:
;extension=php_pgsql.dll
Сняв комментарий (;) вы тем самым подключите данную dll и сможете пользоваться функциями для PostgreSQL. Для dBase paradox это по-видимому строка
;extension=php_dbase.dll
Приведеные выше расширения преназначены для работы в Windows. Под Unix используйте библиотеки *.so
Ответ отправил: Miklucho (статус: Практикант)
Ответ отправлен: 05.04.2008, 21:30