MySQL PHPMyAdmin Localhost для принятия магических кавычек

У меня небольшая проблема с моим локальным хостом в Ubuntu для приема данных, отправленных с апострофами из файла PHP в базу данных MySQL.

Пример:

It's your birthday!

Не будет принята моей базой данных localhost, и она тоже не примет ничего, что будет с ней.

Пример:

Its your birthday!

Будет принята моей базой данных localhost и всем остальным, что будет с ней, пока не будет опубликовано никаких апострофов.

Как я могу заставить свой локальный компьютер работать как мой сервер в сети, который принимает апострофы с данными, размещенными в базе данных? Это будет более уверенным для меня, что мой код работает во время разработки.

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

2 ответа

Решение

Вам нужно экранировать строку перед тем, как вставить ее в базу данных, используя mysql_real_escape_string() Функция увидеть это документы здесь

Обновление: вы должны поместить magic_quotes_gpc в "on" в вашем файле php.ini, чтобы сервер экранировал специальные символы, добавляя \ перед ними, как addslashes() Функция PHP, но я рекомендую использовать mysql_real_escape_string() функция, потому что она заставляет mysql экранировать строку, и это лучше, чем функция добавления слешей, или вы можете использовать функцию, подобную этой функции, которую я использую для этого:

function mysql_prep($value) {
  $magic_quotes_active = get_magic_quotes_gpc();
  $new_enough_php = function_exists( "mysql_real_escape_string" );
        // i.e. PHP >= v4.3.0
  if( $new_enough_php )  // PHP v4.3.0 or higher
  {
            // undo any magic quote effects so mysql_real_escape_string can do the work
    if( $magic_quotes_active ) 
    { 
     $value = stripslashes( $value );
    }
     $value = mysql_real_escape_string( $value );
  } else // before PHP v4.3.0
     { 
      // if magic quotes aren't already on then add slashes manually
         if( !$magic_quotes_active ) 
         { 
         $value = addslashes( $value ); 
         }
    // if magic quotes are active, then the slashes already exist
      }
  return $value;
 }

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

Вы должны сделать это наоборот. Магические кавычки устарели и полностью удаляются в PHP6, потому что это была плохая идея ™. Как говорится в руководстве, "полагаться на эту функцию крайне не рекомендуется".

Другие вопросы по тегам