У меня есть фрагмент кода php, как показано ниже:
function is_ancestor_of( $page_name = null, $post ) { if(is_null($page_name)) return false; // does it have a parent? if (!isset( $post->post_parent ) OR $post->post_parent <= 0 ) return false; //Get parent page $parent = wp_get_single_post($post->post_parent); if ( $parent->post_name == $page_name ){ echo $parent->post_name.' - '.$page_name; return true; } else { is_ancestor_of( $page_name, $parent ); } }
Я просто хочу вставить весь этот код в таблицу базы данных mysql и снова снова просмотреть его с тем же форматированием на странице. Когда я просто вставляю этот код в базу данных с помощью запроса INSERT INTO, тогда синтаксическая ошибка mysql возникает, потому что код разбивает sql-запрос из-за специальных символов. Есть какой-либо способ сделать это??
Благодарю.
Да, ты можешь это сделать. Несколько способов:
EDITED Подчеркнутый PDO по сравнению с предыдущей версией этого ответа, поскольку PDO намного безопаснее других опций, и есть много чего для него, что можно использовать при работе с PHP и MySQL.
Выбери специальные символы, используя mysql_real_escape_string () . Вероятно, вам лучше удалиться от функций mysql_ * и, например, начать использовать PDO или mysqli_ * .
Изменить Как упоминалось в комментариях, убедитесь, что вы поместите код в виде строки и что поле БД является правильным типом данных. Кроме того, убедитесь, что вы используете mysql_real_escape_string () (если вы настаиваете на использовании mysql_ *) на всей строке (или коде).
Вам нужно будет использовать mysql_real_escape_string () для выхода из PHP-кода, чтобы он не выдавал ошибку при вставке. Затем вы запустите eval () в инструкции, если хотите ее выполнить. Если у вас есть смешанный html и php, хранящиеся в базе данных, вы бы назвали eval так, чтобы
eval('?>'.$dbresult.'<?php');
Просто убедитесь, что stripslashes () на результат базы данных