ORM的FuelPHP更新导致“ 而不是“零星地”

我正在使用PHP 5.4.4,并且使用FuelPHP ORM保存和更新功能获得了非常奇怪的行为。

我试图将序列化或JSON数据保存到数据库中的某个字段,例如{"name":"michael"} 。 当我在Model::forge()之后直接使用model->save()它似乎在100%的时间内正常工作,并且您看到的字符串是存储在MySQL数据库中的字符串。

但是,如果我立即改变诸如model-> property ='new property'(不是JSON或序列化数据属性)之类的东西,然后再做另一个model->save()那么90%的时间会将我所有的"变成&quot

看起来,当我调试问题并逐行执行时,它不会再现这个问题! 它将通过整个剧本并且仍然具有正确的"而不是&quot

这个问题使我疯狂。 我会认为它是一个配置的东西,或者会有更多的投诉,但我找不到合适的开关。 我已经在我的.htaccess中设置了php_flag magic_quotes_gpc Offphp_flag magic_quotes_runtime Off (虽然它不应该在PHP 5.4以上版本中使用),并验证了两者都是错误的。

我在这里没有想法。 任何要调查的东西都会很有帮助。


你的ORM可能使用某种转义函数来保存你的json字符串。 这是防止SQL注入攻击的安全功能。 如果您需要存储json,请使用像MongoDB或CouchDB这样的noSql解决方案。 否则,你需要清理你的JSON字符串,当他们从MySQL出来并解码之前。

http://dev.mysql.com/doc/refman/5.0/en/string-literals.html


尝试添加一些“回声”语句来打印出你的变量,以便你可以找出它发生的地方。 这通常会发现原因。

您也可以尝试为html实体添加诸如double_encode之类的内容,以阻止其对它们进行编码。


如果“转换为”在数据库中,那么它不是一个问题。 它的安全性。 如果你在浏览器上渲染输出,它会再次出现。

如果您的浏览器显示“as”,那么您需要在打印前解码该值。

链接地址: http://www.djcxy.com/p/11119.html

上一篇: FuelPHP update of ORM results in " instead of " sporadically

下一篇: PHP: Cannot Successfully Execute protoc