gpt4 book ai didi

MySQL SELECT 不适用于包含换行符的文本

转载 作者:行者123 更新时间:2023-12-05 08:11:26 24 4
gpt4 key购买 nike

我正在尝试使用 PHP 的 PDO 在表中搜索文本是否已存在。

问题是如果文本包含换行符,MySQL 不会在表中找到该行。

我的查询是:

SELECT * FROM tableName WHERE colName = 'test
other chars \\ '' " _ \% àèìòù'

如果我删除新行,它会找到该行。

编辑:

我发现 SELECT 找到该行仅当该行的内容被保存时用 \n 替换换行符,回车符为\r 和带有 \t 的制表符。

例如,使用 PHP:

$text = str_replace(array("\n", "\r", "\t", "'", "\\"), array("\\n", "\\r", "\\t", "''", "\\\\"), $text;
$query = "INSERT INTO tableName SET colName = '$text'";
...

这样做是真的还是我遗漏了其他东西?

最佳答案

我发现 SELECT 找到该行仅当该行的内容被保存时用 \n 替换换行符,回车符为\r 和带有 \t 的制表符。

例如,使用 PHP:

$text = str_replace(array("\n", "\r", "\t", "'", "\\"), array("\\n", "\\r", "\\t", "''", "\\\\"), $text;
$query = "INSERT INTO tableName SET colName = '$text'";
...

通过这样做,它应该独立于运行 MySQL 的操作系统。

注意:这只是解释为什么 SELECT 无法在数据库中找到该行,考虑到查询中输入的每个数据都必须首先进行清理,以防止错误或 SQL 注入(inject)!

关于MySQL SELECT 不适用于包含换行符的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57571630/

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