У меня сложилось впечатление, что подготовленные операторы PDO также делали то, что делал старый MYSQL_REAL_ESCAPE_STRING. Мой код использует подготовленные состояния следующим образом:
$updatesql = "UPDATE projects
SET title= ?, project_status= ?, bpm= ?, genre= ?, release_genre= ?,
vocals= ?, lyrics_written= ?, voice_of= ?, start_date= ?, finish_date= ?,
project_time= ?, file_name= ?, mixed= ?, mastered= ?, mixed_by= ?,
mastered_by= ?, loudness_level= ?, release_date= ?, artwork_link= ?,
audio_link= ?, length= ?, lyrics_link= ?, priority= ?, notes= ?, lyrics= ?,
project_key= ?, featuring= ?, producers= ? WHERE id= ?
LIMIT 1";
//update record with PDO
$pdo->prepare($updatesql)->execute([$title, $project_status, $bpm, $genre, $release_genre,
$vocals, $lyrics_written, $voice_of, $start_date, $finish_date,
$project_time,$file_name, $mixed, $mastered, $mixed_by,
$mastered_by, $loudness_level, $release_date, $artwork_link,
$audio_link, $length, $lyrics_link, $priority, $notes, $lyrics,
$project_key, $featuring, $producers, $id ]);
пока я не нахожу, отправляет ли форма слово O'riely,это вызывает ошибку MYSQL.
i CANT USE mysqli_real_escape_string, потому что он ожидает подключения mysqli в качестве 1-го параметра и я использую PDO.
Единственное другое решение, которое использует addlashes для всех моих вставок в БД, а затем разбрасывает на всех моихотображать поля данных?Это похоже на то, что мы сделали бы только 10 лет назад.Что мне не хватает, так как это относится к наилучшей практике обработки апострофа и т. Д. При использовании подготовленных заявлений PDO?
ОБНОВЛЕНИЕ:
Моя локальная среда / информация о сервере выглядит следующим образом: Сервер: Локальный хост через сокет UNIX Тип сервера: Версия MySQL Server: 5.7.26-0ubuntu0.18.04.1 - (Ubuntu) Версия протокола: 10 Пользователь: root @ localhost Серверная кодировка: UTF-8 Unicode (utf8) Apache / 2.4.29 (Ubuntu) Версия клиента базы данных: libmysql - mysqlnd 5.0.12-dev - 20150407 - $ Id: 3591daad22de08524295e1bd073aceeff11e6579 $ Расширение PHP: mysqliDocumentation mbstringDocumentation Версия PHP: 7.2.17-0ubuntu0.18.04.1
СООБЩЕНИЕ ОБ ОШИБКЕ:
INSERT INTO projects ( title, project_status, bpm, genre, release_genre,
vocals, lyrics_written, voice_of, start_date, finish_date,
project_time, file_name, mixed, mastered, mixed_by,
mastered_by, loudness_level, release_date, artwork_link, audio_link,
length, lyrics_link, priority, notes, lyrics,
project_key,featuring, producers )
VALUES ( 'wyatt's', 'Idea Only','99', '99', '99',
'0','0', '', '1969-12-31', '1969-12-31',
'0', '', '0', '0', '',
'', '', '1969-12-31', '', '',
'', '', '3', '', '',
'','', '')
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's', 'Idea Only','99', '99', '99', '0','0', '', '1969-12-31', '1969-12-31', '0',' at line 7