php - MySQL PHPMyAdmin 本地主机接受魔术引号

标签 php mysql quotes magic-quotes

我在 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/

相关文章:

Mysql 在外键列中设置 NULL 值

bash - Bash 中单引号和双引号的区别

php - 如何修改服务器上的 less 文件?

mysql - 如何将 MySQL 中的模式定义为另一个模式的子集

php - 在 CakePHP 框架内自动创建数据库表

mysql - MySQL 中何时使用单引号、双引号和反引号

scripting - 在批处理脚本中转义双引号

php - 如何在 Laravel 5.5 中同时使用 GroupBy 和 OrderBy

php - 对于 Mysql 和 PHP 中的 UTF-8,我真的需要从 VARCHAR 切换到 VARBINARY 吗?

php - PDO 为 mysql_num_rows 准备了等效语句