Я прочитал несколько статей о str_replace() здесь и на других ресурсах, но не нашел ответа на свою проблему.
Вот строка, с которой у меня возникла проблема, которая хранится в $title ...
Paul McCartney's Theme From The Film "The Honorary Consul”
Вот код, который я использую ...
str_replace(‘“‘,’ ‘,$title);
По какой-то причине приведенный выше код полностью игнорирует эту строку и ряд других похожих.
Я думаю, это может быть из-за апострофа, поскольку приведенный выше код отлично работает для строк, которые не содержат апострофа как части текста.
Мне нужно сохранить в названии апостроф, но меня не так беспокоит "
Однако, если кто-то может предложить способ сохранить и то, и другое в одной строке и добавить всю строку в командную строку MySQL INSERT, для меня это будет лучшим результатом.
@tftd вы можете опубликовать пример?]
@RichStarkie php.net/manual/en/pdo.prepared-statements.php
Возможный дубликат Как я могу предотвратить SQL-инъекцию в PHP?
Ребята выше уже выложили более чем достаточно. И поскольку в какой-то момент вы можете запутаться, если будете использовать pdo exec или execute - это дополнительный бонус stackoverflow.com/questions/26849105/pdoexec-or-pdoexecute. : D






Вы можете использовать PDO :: цитата
На php.net есть хорошие примеры, просто посмотрите руководство.
Попробуйте так:
$title = 'Paul McCartney\'s Theme From The Film "The Honorary Consul”';
str_replace('”',' ', $title);
В любом случае, я бы порекомендовал вам использовать подготовленные операторы для вставки ваших данных.
Следуйте этому примеру: https://www.w3schools.com/php/php_mysql_prepared_statements.asp
Я бы избежал ’, если бы мог, но переменная $title исходит из API (из очень надежного и уважаемого источника)
@RichStarkie, что возвращает var_dump ($ title)? Наверное, он уже сбежал.
@RichStarkie, ладно, тебе не нужно убегать. Просто используйте вторую строку моего кода. Вы использовали символ ‘, что неверно. Это должен быть '.
это команда, которую я уже использую, но она не работает :( похоже, что приложение SO не переводит ' должным образом :(
@RichStarkie, что возвращает var_dump(str_replace('”',' ', $title));?
придется запустить весь сценарий, что займет около часа (эта запись составляет примерно четверть пути от набора данных), хотя оператор MySQL - это INSERT INTO tablename ( trackId, releaseID, trackTitle, artistId, trackPosition) VALUES ('3820941 - 0002', '3820941', 'Paul McCartney's Theme From The Film "The Honorary Consul"', '273394', 'A2' )
string(58) "Paul McCartney's Theme From The Film "The Honorary Consul"" - это ответ @reza
@RichStarkie Итак, у вас нет ”, у вас есть ". Но в любом случае не исправляйте это, это не ответ. Делайте это правильно, параметризуйте свой запрос.
ИСПОЛЬЗУЙТЕ ПОДГОТОВЛЕННЫЕ ЗАЯВЛЕНИЯ PDO !!!! Вам не нужно беспокоиться об этом с заранее подготовленными операторами. Если вы их не используете - вам следует начать немедленно, поскольку вы, вероятно, открыты для SQL-инъекций.