Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带PDO prepare和magic_引号的撇号_Php_Pdo_Quotes - Fatal编程技术网

Php 带PDO prepare和magic_引号的撇号

Php 带PDO prepare和magic_引号的撇号,php,pdo,quotes,Php,Pdo,Quotes,给定代码 $stmnt= $pdo->prepare ("insert into books (author, title, purchased, completed, price, format) VALUES (:author, :title, :purchased, :completed,:price, :format)"); $stmnt->bindParam (':author', $author); $stmnt->bindParam (':titl

给定代码

$stmnt= $pdo->prepare ("insert into books (author, title, purchased, completed,
price, format) VALUES (:author, :title, :purchased, :completed,:price, :format)"); 
  $stmnt->bindParam (':author',    $author);
  $stmnt->bindParam (':title',     $title);
  $stmnt->bindParam (':purchased', $purchased);
  $stmnt->bindParam (':price',     $price);
  $stmnt->bindParam (':completed', $completed);
  $stmnt->bindParam (':format',    $format);
MySQL表中存储的字符串
dog's

是狗的还是狗的

PHPAdmin说
狗的

在任何一种情况下,当我使用PDO从MySQL返回字符串时,我只看到字符串中的字符,但不包括撇号,例如
dog

我需要对字符串做什么才能正确显示

phpinfo
关闭了
magic_quotes
的报告

编辑

我发现,如果我使用PHPMyAdmin手动删除斜杠,然后使用htmlspecialchars或htmlspecialchars,那么效果会很好。现在我只需要弄清楚为什么反斜杠存储在sql表中


PHPInfo说magic_quotes_gpc和magic_quotes_运行时处于关闭状态(本地值和主值),因此在表中插入反斜杠是另外一回事。

这不是PDO在做的事情:您可能已经启用了。在该查询之前是否对变量进行了预处理?还显示输出代码,以及要在哪个上下文中显示它。如果只看到引号之前的字符,但不包括引号,则听起来像是在HTML属性中使用它,而没有正确转义它。当您需要使用
“value='$value'”
时,如在
中所示。htmlspecialchars($value,entu引号)。“'”
如前所述,显示您的输出代码,因为这可能是错误的。输出代码已更改为添加$title=htmlspecialchars($book->title,entu QUOTES);这解决了字符串被截断的问题,但我仍然有添加反斜杠的问题。我发现我的post函数(在使用PDO之前编写)添加了反斜杠。谢谢大家。正如经常发生的那样,只要让我更直截了当地思考就能解决问题。