Mysql 为什么在禁用magic_quotes_gpc的情况下插入PDO DB仍然会导致DB中出现反斜杠?

Mysql 为什么在禁用magic_quotes_gpc的情况下插入PDO DB仍然会导致DB中出现反斜杠?,mysql,pdo,escaping,magic-quotes-gpc,Mysql,Pdo,Escaping,Magic Quotes Gpc,在我正在运行php_fastcgi5的服务器上,根目录中有一个.htaccess文件,其中包含此指令,用于关闭magic_quotes_gpc: php_flag magic_quotes_gpc off phpinfo输出报告magic_quotes_gpc的本地值确实已关闭。但是,主值处于启用状态 我不确定报告是否准确,首先是因为我阅读了,其次是因为以下使用PDO准备语句的代码仍然以反斜杠插入数据库记录结束: <?php $db = new PDO('mysql:host=examp

在我正在运行php_fastcgi5的服务器上,根目录中有一个.htaccess文件,其中包含此指令,用于关闭magic_quotes_gpc:

php_flag magic_quotes_gpc off
phpinfo输出报告magic_quotes_gpc的本地值确实已关闭。但是,主值处于启用状态

我不确定报告是否准确,首先是因为我阅读了,其次是因为以下使用PDO准备语句的代码仍然以反斜杠插入数据库记录结束:

<?php
$db = new PDO('mysql:host=example.com;dbname=my_database_name;charset=utf8', 'database_user', 'password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$output = '<p>Post some text which includes some apostrophes:</p><form name="form" action="test.php" method="post"><input type="text" size="60" name="string" value="The server\'s not behaving as it\'s supposed to." /><br /><br /><input type="submit" value="Post" /></form><br />----------<br />';

if (isset($_POST['string'])) {
  $PostedString = $_POST['string'];
  $InsertQuery = $db->prepare("INSERT INTO `test` (string) VALUES (?)");
  $SuccessfulInsertion = $InsertQuery->execute(array($PostedString));
  if ($SuccessfulInsertion) {
    $ReadStatement = $db->prepare('SELECT * FROM `test` ORDER BY `id`');
    $ReadStatement->execute();
    $ReadStatement->setFetchMode(PDO::FETCH_ASSOC);
    while($row = $ReadStatement->fetch()) {
      $ThisString = $row['string'];
      $output .= '<p>'.$ThisString.'</p>'.$CR;
    }
  }
}
echo $output;
?>
有人知道为什么使用此代码插入数据库的文本仍然会导致在撇号之前添加斜杠的db记录吗


这是因为PHP是以PHP_fastcgi5运行的吗?也就是说,关闭magic_quotes_gpc的.htaccess指令是否因此而不起作用?如果是,是否有解决办法?我无法访问php.ini文件。

我也有同样的问题

Magic_quotes_gpc-本地:关闭-主控:打开

但是$\u POST有斜杠

还运行fastcgi。我想知道这是否是fastcgi的问题


我们不得不使用-d magic\u quotes\u gpc=off强制关闭它。

如果您使用var\u dump$\u POST;,它逃到那里了吗?如果是的话。。。。如果该服务器仍然声称magic_quotes_gpc已关闭,则该服务器上正在发生可疑的事情。在此之前没有自动预处理或其他代码篡改数据?文本中似乎有反斜杠:value=服务器没有按预期运行。@Wrikken Yes,正在执行var\u dump$\u POST;显示要使用反斜杠的输出。除了上面列出的代码之外,没有其他代码了。@Marcus Adams这只是因为我在PHP中使用了单引号。它们与输出到db的反斜杠无关——这些反斜杠只出现在输入任何撇号之前。如果我将文本字段留空并手动输入带有撇号的文本,则会出现相同的结果。@JohnDoe:所以,问题不在这段代码中,而是在前面。如果phpinfo;说没有神奇的引号,也没有自动前置。。。。有东西在插入那些引语。你是服务器的所有者吗?如果没有,请询问所有者是否已安装/配置了可以执行此操作的内容。