Как сохранить введенное текстовое значение или значение текстовой области с символом & и специальными символами?

Я уже проверил htmlentities, htmlspecialchars, mysql_real_escape_string, но мне ничего не помогло.

Я просто хочу сохранить "Здравствуйте, меня зовут Джон, а мой родной Ченнай"

когда я пытался сохранить это, только "Привет, меня зовут Джон" сохраняется.

Что я должен сделать, чтобы сохранить & символ из PHP-формы в базе данных MySQL?

Обновить с помощью образца кода: Пусть поле ввода будет как,

<input type="text" name="product_desc" />

и получение значений в php будет как

$product_description = htmlentities($_POST['product_desc']);
$product_description2 = htmlspecialchars($_POST['product_desc']);

3 ответа

Решение

В этом нет ничего особенного & символ в строке в php.

Единственный способ получить результат, который вы получите (все после & не сохраняется...), это когда вы отправляете данные в ваш php-скрипт и строите строку данных вручную без правильного ее кодирования.

Если вы используете Javascript для выполнения запроса POST, вам необходимо кодировать свои значения, используя encodeURIComponent() прежде чем добавить их в строку запроса.

Если вы используете php (например, cURL) для выполнения запроса POST, вам нужно urlencode() правильно кодировать значение, прежде чем добавить его в строку запроса.

А для хранения любой строки с любыми символами в базе данных рекомендуется использовать подготовленный оператор со связанными параметрами. Однако это, похоже, не имеет ничего общего с вашей проблемой.

  • Используйте готовые заявления. См. Ссылку (ы) ниже.

Вот скрипт, который я использую (извлеченный из одной из моих библиотек), и он работает, даже с амперсандом (предварительно протестированным), и убедитесь, что столбец varchar,

  • Предварительный тест успешно ввел "Джон и я" в БД.

  • Вам нужно будет изменить его в соответствии с вашими потребностями и т. Д.

-mysqli с методом подготовленных заявлений

<!doctype html>
<head></head>
<title></title>

<body>
    <form action="<?php echo htmlentities($_SERVER["PHP_SELF"]); ?>" method="post">
    <p><strong>Name: </strong>
    <input name="name" type="text" width="50">     
    </p>
    <p><strong>Email: </strong>
    <input name="email" type="text" width="50" /></p>
    <p><input type="submit" name="submit" value="Submit" /></p>
    </form>
</body>
</html>

<?php

error_reporting(E_ALL);
ini_set('display_errors', 1);
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

$DB_HOST = 'xxx';
$DB_USER = 'xxx';
$DB_PASS = 'xxx';
$DB_NAME = 'xxx';


$con = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if($con->connect_errno > 0) {
  die('Connection failed [' . $con->connect_error . ']');
}

if( isset($_POST['submit']) 
    && !empty($_POST['name']) 
    && !empty($_POST['email']) ){


/* ===================== not all parts needed, modify to suit ======================= */

$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
$email = filter_var($email, FILTER_VALIDATE_EMAIL);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    // Not a valid email
    $error_msg = '<p class="error">The email address you entered is not valid.</p>';
echo $error_msg;
exit;

}

/* ===================== not really needed, just querying ======================= */

$checkemail = mysqli_real_escape_string($con, $_POST['email']);

$query = "SELECT * FROM yourTable WHERE email = '".$checkemail."'";

$result = mysqli_query($con, $query) or die(mysqli_error($con));

if (mysqli_num_rows($result) > 0) {

   echo $checkemail . " already exists in DB";
   exit;
}

    $name = stripslashes($_POST['name']);
    $name = mysqli_real_escape_string($con, $_POST['name']);
    $email = mysqli_real_escape_string($con, $_POST['email']);

$sql = mysqli_prepare($con, "INSERT INTO yourTable 
                         (id, name, email)
                          VALUES (null,?,?)");
    $sql->bind_param("ss", $name, $email);
    $sql->execute();

if($sql){
   echo "Success!";
}

}

else{
echo "Fill in all fields.";
}

Рекомендации):

Вы пробовали использовать HTML-объекты?

&amp; = $

Информация обо всех сущностях: http://www.w3schools.com/html/html_entities.asp

Другие вопросы по тегам