我使用PHP传递这样的查询:

"UPDATE `prove750_mrdias`.`stringsMrDias`
SET `conteudo` = '$conteudo'
WHERE `stringsMrDias`.`ID` = $id;"

当我echo $conteudo我得到Sobre\nmim如预期。
但是在查询之后,我查看数据库,存储的值是格式化的字符串:
“索布雷
毫米
在将数据解析回我的应用程序时,这会导致各种各样的问题。
如果我转到phpMyAdmin并手动传递$conteudo的值,它将保持预期的行为,只有在查询替换发生而不调用它时。
有什么想法吗?

最佳答案

我怀疑这是一个插值的问题。你可以用事先准备好的陈述一石二鸟。使用准备好的语句
你的数据不会被破坏或者需要你手动处理,
您的应用程序不会受到安全问题的影响。
这可能看起来像:

$sql = "UPDATE `prove750_mrdias`.`stringsMrDias` SET `conteudo` = ? WHERE `stringsMrDias`.`ID` = ?";
$preparedStatement = $pdo_handle->prepare( $sql );
$preparedStatement->execute([$conteudo, $id]);

也就是说,首先告诉数据库要执行的查询的形式,然后在单独的调用中,向该查询发送参数。

关于php - MySQL在存储数据时不需要自动将\n替换为换行符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49611183/

10-12 14:36
查看更多