Как вставить фрагмент кода php в базу данных mysql

У меня есть фрагмент кода 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-запрос из-за специальных символов. Есть какой-либо способ сделать это??

Благодарю.

Да, ты можешь это сделать. Несколько способов:

  1. PDO – это лучший вариант. Изучите эту тему в руководстве по PHP, поскольку это может быть намного больше, чем просто защита ваших запросов MySQL в PHP от взлома.
  2. addslashes () – добавляет косые черты в escape-символы. Это не будет прерывать ваш запрос MySQL.
  3. mysql_real_escape_string ()
  4. mysql_escape_string ()

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 () на результат базы данных