PHP экранирует закодированные кавычки - PullRequest
1 голос
/ 10 октября 2010

У меня есть следующий фрагмент кода, который отправляет некоторые данные в базу данных:

$post = trim( $post );
$post = htmlentities( $post, ENT_QUOTES, null, false );

$statement = "INSERT INTO table (row) VALUES (:message)";
$prepared_posts = $pdo->prepare( $statement );
$prepared_posts->execute( array( ':message' => $post ) );

У меня версия MySQL 5.1.47-community как на локальном, так и на промежуточном / производственном сервере, но я получаю разные результаты на обоих из них. На локальном хосте у меня работает PHP 5.3.2, рабочий сервер имеет PHP 5.2.14.

Если я пытаюсь опубликовать предложение that's "ok", на производстве это экономит that\'s \"ok\", localhost выдает правильное that's "ok".

Что может быть причиной этого? Может ли быть какая-то настройка MySQL? Я также попытался использовать mysqli вместо PDO, и он делает то же самое.

Ответы [ 2 ]

1 голос
/ 10 октября 2010

Эти дополнительные обратные слеши могут быть Магические кавычки , поэтому that's "ok" становится that\'s \"ok\".Попробуйте отключить их .

0 голосов
/ 10 октября 2010

Я полагаю, что magic_quotes_gpc - это on на рабочем сервере, а на локальном хосте - off.

Вы можете установить его с помощью команды ini_set.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...