【发布时间】:2014-11-21 19:52:07
【问题描述】:
foreach($article AS $key => $value)
{
mysql_query("UPDATE articles SET description = '".mysql_real_escape_string($value)."' WHERE id = '".$key."'");
}
大家好,
我有一个非常简单的 foreach 循环,我在其中运行 UPDATE 查询。是的,我知道我应该使用 PDO,但我只是在测试它,所以不用担心。 $key 和 $value 不为空。我已经验证了它们的值是预期的值。 $value 包含一个带有多个 \n(新行)的字符串。
现在脚本在我的服务器上运行,但只要我在另一台服务器上尝试它,UPDATE 语句就不会被触发。没有错误或警告。似乎其他服务器不喜欢 $value 的内容。事实上,如果我将 $value 例如替换为“abc”,它就可以工作。所以我在这里试图了解问题所在。然后? mysql_real_escape_string?我应该怎么做才能调试这个问题?
【问题讨论】:
-
如果您只是学习 PHP,请不要学习过时的
mysql_query接口。这很糟糕,并且在 PHP 的未来版本中被删除。像PDO is not hard to learn 这样的现代替代品。像PHP The Right Way 这样的指南可以帮助解释最佳实践。始终绝对确定您的用户参数是properly escaped,否则您将遇到严重的SQL injection bugs。 -
尝试读取错误日志。
-
所以测试错误,不要只是假设成功:
mysql_query(...) or die(mysql_error()).
标签: php mysql foreach newline mysql-real-escape-string