2013-05-01 3 views
1

Я использую PHP и MySQLi и я встречаю проблемы с вставкой запроса, который выглядит как:MySQLi PHP оленья кожа запрос вставки символа «+»

SET NAMES 'utf8' 
    $text = mysqli_real_escape_string($connection, $text) 
    insert into table values('', '".$text."'); 

Страницы кодируются utf8 без BOM и MySQL является общим utf8 ci

Проблема заключается в том, что я использую phpmyadmin, запрос отлично работает, но когда я использую интерфейс веб-сайта и набираю текст с символом «+», он заменяет пробел «» в mysql, но все остальные символы, такие как «,», акценты , \, /,% правильно вставлены ... Он работал, прежде чем я, вероятно, допустил ошибку.

Спасибо вам заранее и извините за мой бедный английский.

+1

Вы пытались связать параметры с подготовленными операторами? – Kermit

+0

Привет, я плохо разбираюсь в подготовленных запросах, и я знаю, что мне придется их использовать, но я не понимаю здесь проблемы, и это сходит с ума :) – toolook

+0

Итак! Я пробовал подготовленный запрос для этого, и текст, который я добавил, по-прежнему не имеет «+» ... О отчаянии ... – toolook

ответ

0

Это не mysql, не mysqli, не PHP. Ни один из них не имеет особого значения в этом символе.

Если вы хотите проверить свои вставки, просто эхом от $text до вставки, вы увидите, что он уже лишен знака +. Итак, вам нужно найти код, который выдает этот символ.

Программа не является «черным ящиком», который вы передаете с данными, и возвращает неожиданный результат.
Но, скорее, набор операторов, каждый из которых выполняет некоторые манипуляции с данными.

Итак, у вас есть debug ваш код, это означает, что вы должны эхо-переменную $ text в разных частях вашего кода, чтобы увидеть, где она изменилась. Скорее всего, это становится ненужным. После обнаружения этого кода вы можете либо удалить его, либо запросить здесь, нормально ли это или нет.

Единственный возможный случай автоматической замены символа + - это если вы введете текст прямо в адресной строке браузера. В этом случае + может быть заменено пространством автоматически, так как PHP декодирует urlencoded текст и + используется для замены символа пробела в URL-адресе

+0

Спасибо за ответ! Я новичок в кодировании, и, похоже, вы показываете мне путь, потому что это добавление ajax отправлено в php-файл, поэтому я нахожусь на нем и вернусь к новостям. еще раз спасибо. – toolook

+0

Ну, вы были правы из-за плохого использования функции encodeURI ajax. Фактически «encodeURIComponent» необходим, когда переданное значение не похоже на уже существующий URL и составлено персонажами, которые должны отображаться как комментарии или текст, составленный пользователем. Огромное спасибо за то, что вы показали мне дорогу и извинились за то, что тратили свое время. – toolook

+0

Я был неправ за теги, если модератор мог их изменить в кодировку символов и javascript, это было бы большой благодарностью за отличный сайт и сообщество. – toolook

Смежные вопросы