MySQL PHPMyAdmin Localhost для принятия магических кавычек - PullRequest
0 голосов
/ 11 мая 2011

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

Пример:

It's your birthday!

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

Пример:

Its your birthday!

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

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

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

Ответы [ 2 ]

2 голосов
/ 11 мая 2011

вам нужно экранировать строку перед тем, как вставить ее в базу данных с помощью функции 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;
 }
1 голос
/ 11 мая 2011

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

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

...