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, потому что это была плохая идея ™. Как говорится в руководстве, "полагаться на эту функцию крайне не рекомендуется".