@Pantene742

Как в PHP через PDO добавить спец. символ?

Этот символ когда попадает в ячейку базы то удаляет все после себя. Я его не могу тут напечатать, он удаляет продолжение вопроса и сам пропадает. Значек трофея короче.

Он типо вначале названия, поэтому ячейка пустая.
  • Вопрос задан
  • 347 просмотров
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Кодировка к кавычкам не имеет никакого отношения.

Чтобы всегда добавлять любые символы в БД без ошибок, надо использовать подготовленные выражения.
Кодировку, впрочем, тоже надо задавать не с помощью шаманских плясок с бубном, а правильно.
В итоге код должен выглядеть примерно так
$host = '127.0.0.1';
$db   = 'test';
$user = 'root';
$pass = '';
$charset = 'utf8';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$opt = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];
$pdo = new PDO($dsn, $user, $pass, $opt);

$ujasnaya_kavychka = '"""""';
// подготавливаем запрос, заменяя все переменные знаками вопроса
$stmt = $pdo->prepare("INSERT INTO table (pole_s_kavychkoy) VALUES (?)");
// исполняем его, передавая все переменные отдельно
$stmt->execute([$ujasnaya_kavychka]);

При таком способе выполнения запросов ни одной ошибки, вызванной передаваемыми в запрос данными никогда в принципе не произойдет.

Еще одна проблема может быть связана не с запросом, а с выводом. многие нубы выводят свои данные с кавычками в атрибут тега HТML,
<input type="text" value="<?=row['pole_s_kavychkoy']">

получают на выходе что-то вроде
<input type="text" value="артель "рога и копыта">
и страшно пугаются - оказывается, коварная база данных украла у них весь текст после кавычки.
Чтобы отобрать этот текст обратно ,весь вывод надо производить через htmlspecialchars()

Поскольку вопросы был отредактирован, то отредактирую и ответ:
Если речь идет не про кавычку, а про развесистую эмодзи, то в стандартной ut8 они не поддерживаются, и надо использовать utf8mb4 - как в таблицах, так и при соединении.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы