我在 Ubuntu 上的本地主机上遇到了一个小问题,无法接受带撇号的数据从 PHP 文件发布到 MySQL 数据库中。
示例:
It's your birthday!
不会被我的本地主机数据库接受,也不会接受任何附带的内容。
示例:
Its your birthday!
只要没有张贴撇号,就会被我的本地主机数据库以及它附带的其他所有内容接受。
如何让我的本地计算机像我的在线服务器一样工作,接受撇号并将数据发布到数据库?这将更加确保我的代码在开发时能够正常工作。
我想让我的本地主机像我的服务器一样接受数据而不使用 mysql_real_escape_string()。
最佳答案
在将字符串插入数据库之前,您需要使用 mysql_real_escape_string()
对字符串进行转义函数请参阅它的文档 here
更新:您应该在 php.ini 文件中将 magic_quotes_gpc 设置为“on”,这将使服务器通过在特殊字符前添加\来转义特殊字符,就像 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;
}
关于php - MySQL PHPMyAdmin 本地主机接受魔术引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5962619/