2016-05-14 5 views
0

Как вставить текстовые сообщения в базу данных mysql с помощью PHP.Как мне вставить текст в базу данных mysql, используя php?

Мой код:

<?php 

$message = htmlspecialchars($_POST['message']); 
$message = mysqli_real_escape_string($connection, $message); 

mysqli_query($connection, "INSERT INTO messages (messages) VALUE ('$message')"); 
?> 

Моя проблема:

Когда я вхожу этот знак (°) в области текста сообщения, он ничего не вставляет.

+0

Что такое 'var_dump ($ _ POST ['message])' дает вам? Ваша колонка называется «массаж» во множественном числе? –

+0

Также опубликуйте 'var_dump ($ message)' после внесения изменений. Дайте нам исходный ввод в 'textarea'. –

ответ

0

Попробуйте процитировать значение так:

mysqli_query($connection, "INSERT INTO messages (messages) VALUE ('$message')"); 
+0

Это только пример, и это не проблема, я использую кавычки, я также обновил код. –

0

Поместите этот код, прежде чем выполнить запрос

mysqli_set_charset($con,"utf8"); 

и установить параметры сортировки вашего столбца

utf8_general_ci 
+0

Что это значит, вы уверены, что это не повредит никаким данным в базе данных? –

+0

Это позволит хранить специальные символы в вашей колонке. UTF-8 является доминирующей кодировкой символов (вы можете найти больше об этом), и это не повредит никаким данным, но для безопасного способа резервного копирования вашей базы данных перед тестированием чего-либо с ней. – DD77

+0

http://stackoverflow.com/questions/341273/what-does-character-set-and-collation-mean-exactly это может вам помочь .. – DD77

1

Вы должны предпочитают подготовленные инструкции по экранирующей строке.

$connection = new mysqli('localhost', 'user', 'password', 'database'); 

if (!($stmt = $connection->prepare('INSERT INTO `messages` (`messages`) VALUES(?);'))) 
{ 
    echo "error {$connection->errno} on prepare: {$mysqli->error}"; 
} 


if (!$stmt->bind_param('s', $message)) 
{ 
    echo "error {$stmt->errno} on bind param: {$stmt->error}"; 
} 

if (!$stmt->execute()) 
{ 
    echo "error {$stmt->errno} on execute: {$stmt->error}"; 
} 
+0

Вам не кажется, что этот код немного раздутый? Что вы скажете, если я покажу вам способ получения сообщений об ошибках без добавления трех строк кода в каждый оператор mysqli? –

+0

@YourCommonSense - введение PO в исключения PDO было бы излишним. Это то, что я делаю в своем собственном коде или рекомендую передовые кодеры. Ответы должны быть как-то на уровне вопрошающего. –

+0

ahm ... mysqli ... –

-1

Использование base64_encode и base64_decode

Вот несколько примеров.

$str = '° some special chars '; 

$str_encoded = base64_encode($str); 
echo $str_encoded; //ready to be inserted to the DB 
$str_decoded = base64_decode($str_encoded); 
echo $str_decoded; // retrieved and decoded 
Смежные вопросы