wpdb-запрос не возвращает результаты, содержащие одинарные кавычки

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

Поэтому, если я перейду на пост под названием RED SHOES, он отобразит в верхней части экрана ссылку на все другие сообщения с заголовком RED SHOES.

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

Сообщение с названием THE WEATHER: SUNNY будет содержать список всех других сообщений с этим названием. Но сообщение с заголовком TODAY'S WEATHER IS NICE не найдет никаких других сообщений с этим названием, даже если они существуют, потому что в нем содержится одна цитата.

Я искал решение, но не нашел его. Может ли кто-нибудь предложить способ обойти это?

Вот код, который я использую:

global $wpdb; $itemName = get_the_title( $ID ); $results =$wpdb->get_results("SELECT ID FROM $wpdb->posts where $wpdb->posts.post_title LIKE '$itemName' AND $wpdb->posts.post_status = 'publish' ORDER BY post_title ASC", OBJECT); foreach ($results as $result){ $newTitle =$wpdb->get_results("SELECT post_title FROM $wpdb->posts where $wpdb->posts.ID = $result->ID", OBJECT); printf ($newTitle->post_title); } 

Кстати, я понимаю, что код будет отображать только название других страниц, а не ссылку. Я удалил раздел «ссылка», поскольку он отлично работает, поэтому здесь не нужно.

РЕДАКТИРОВАТЬ:

Это обновленный код, основанный на предложении пользователя. В настоящее время он возвращает ошибку «Неожиданно» = «в строке 55», возможно, из-за моего (неправильного) использования правильного синтаксиса кавычек.

 global $wpdb; $itemName = get_the_title( $ID ); $results = $wpdb->get_results($wpdb->prepare("SELECT ID FROM $wpdb->posts where $wpdb->posts.post_title LIKE '%%%s%%'", $wpdb->esc_like("$itemName") AND $wpdb->posts.post_status = 'publish' ORDER BY post_title ASC", OBJECT)); 

Ниже приведен пример выполнения запроса на основе LIKE то время как escpaing параметр значения, переданный в запрос:

 $results = $wpdb->get_results( $wpdb->prepare( "SELECT post_title, ID from $wpdb->posts WHERE post_title LIKE '%%%s%%'", $wpdb->esc_like("today's weather is nice") ) ); 

Обновить:

Исходя из вашего редактирования, ваш запрос некорректно сформирован, следовательно, ошибка, это должно быть:

 global $wpdb; $itemName = get_the_title($ID); $results = $wpdb->get_results( $wpdb->prepare( " SELECT ID FROM $wpdb->posts WHERE $wpdb->posts.post_title LIKE '%%%s%%' AND $wpdb->posts.post_status = 'publish' ORDER BY post_title ASC ", $wpdb->esc_like($itemName) ) );