2014-09-23 2 views
2

Этот вопрос задавали много раз, но ни одно из предложенных решений не работает для меня :(Вставка специальных символов/PHP + MySql + Android

мне нужно вставить специальные символы, как '(закрытие апостроф), например, , в MySql БД через PHP с помощью Android

MySql Таблица определяется как:.

ENGINE=InnoDB DEFAULT CHARSET=utf8; 

Данные передаются в PHP через Java, так:

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
nameValuePairs.add(new BasicNameValuePair("param1", value1));  
nameValuePairs.add(new BasicNameValuePair("param2", value2)); 

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("blabla.php"); 
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8")); 
response = httpclient.execute(httppost); 

PHP получает его так:

//To be able to receive UTF-8 (needed?) 


mb_internal_encoding('UTF-8'); 
mb_http_output('UTF-8'); 
mb_http_input('UTF-8'); 

$param1 = $_POST['param1']; 
$param2 = $_POST['param2']; 

//Convertsion to UTF-8 (needed?) 
$param1 = utf8_decode($param1); 
$param2 = utf8_decode($param2); 

$mysqli = new mysqli($hostname, $username, $password, $dbname); 
mysqli_set_charset('utf8',$mysqli); 
$mysqli->prepare("INSERT INTO ... 

Вставить команда вставляет запись, но специальные символы становится в таблице "?". Любая помощь?

т.е. "A'B" становится в БД: "A B"

Спасибо функция

+0

Показать пример небольшой строки, которую вы отправляете. Затем покажите, как php получает эту строку. Поэтому перед тем, как положить его в базу данных. А также перед расшифровкой его utf8. Мы хотим знать сначала, если база данных имеет к этому какое-либо отношение. – greenapps

+0

После назначения $ mysqli add call: '$ mysqli-> set_charset (" utf8 ");' – Rimas

+0

Я отредактировал свой вопрос, добавив функцию set_charset и пример. Но я продолжаю эту проблему! : '( – Geltrude

ответ

-1

Try mysqli_real_escape_string(). Это ускользает от специальных символов в строке для использования в инструкции SQL с учетом текущей кодировки соединения.

Пример:

mysqli_real_ecape_string($mysqli,$param1); 
mysqli_real_ecape_string($mysqli,$param2); 
+0

Он использует подготовленные операторы. Нет смысла избегать строк. –

0

Удаление вызовов на utf8_decode функции сделал трюк!

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