gpt4 book ai didi

php - 如何在 MySQL 数据库中保存引号

转载 作者:行者123 更新时间:2023-11-30 23:36:33 25 4
gpt4 key购买 nike

每当我在我的 PHP 表单域中添加单引号 (') 或双引号 (") 时,它都会在我的 MySQL 数据库中保存为 "/&# 39;. 如何在我的数据库中保存“真实的”“引号”?

我试图通过 PDO 建立安全的 Mysql 连接来防止这种情况发生,但它似乎无法正常工作。

所以这是我的代码的重要部分:

    $insert_hello = filter_var($_POST['hello'], FILTER_SANITIZE_STRING);
$dbh->query("SET NAMES 'utf8'");
$stmt = $dbh->prepare("INSERT INTO testtable (data) VALUES (:hello)");
$stmt->bindParam(':hello', $insert_hello, PDO::PARAM_STR);
$stmt->execute();

一些背景信息:

服务器在 PHP v5.2.12-0 上运行。

DBStorage 引擎是 InnoDB,其客户端、连接、结果和系统字符集都设置为 utf8。

DB 字段的排序规则设置为 utf8_unicode_ci。

魔术引号通过 .htaccess 被禁用。

提前致谢!

亲切的问候,杰伦

最佳答案

好的,只是为了形式化正确答案:

问题是由将一些字符转换为 HTML 实体的 filter_var() 引起的。无需手动清理数据,因为 PDO 会为您完成。

你可以写这样的东西,应该可以正常工作:

$dbh->query("SET NAMES 'utf8'");
$stmt = $dbh->prepare("INSERT INTO testtable (data) VALUES (:hello)");
$stmt->bindParam(':hello', $_POST['hello'], PDO::PARAM_STR);
$stmt->execute();

关于php - 如何在 MySQL 数据库中保存引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6867261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com