$url=mysql_real_escape_字符串($_POST['url']);
$shoutcast_url=mysql_real_escape_字符串($_POST['shoutcast_url']);
$site_name=mysql_real_escape_字符串($_POST['site_name']);
$site_subtitle=mysql_real_escape_字符串($_POST['site_subtitle']);
$email_suffix=mysql_real_escape_字符串($_POST['email_suffix']);
$logo_name=mysql_real_escape_string($_POST['logo_name']);
$twitter_username=mysql_real_escape_字符串($_POST['twitter_username']);
对于表单中的所有这些选项,它们都是预先填写的(由数据库填写),但是用户可以选择更改它们,从而更新原始数据库。对我来说,最好是更新所有列,尽管可能有一些行没有更新,还是对每个列(本身就是一个查询)执行if($original_db_entry=$possible_new_entry)?
谢谢

最佳答案

我想说,这两种方式都不重要-您发送到服务器的查询大小在这里几乎不相关,并且没有列的“最后更新”信息会被不公正地更新,所以。。。
顺便说一句,我喜欢在处理这些数据负载时创建一个临时数组。

$fields = array("url", "shoutcast_url", "site_name", "site_subtitle" , ....);

foreach ($fields as $field)
 $$field = mysql_real_escape_string($_POST[$field]);

这里唯一需要注意的是,你必须小心不要把变量名放在中,这样会覆盖现有变量。
更新:Col.shranprel提出了正确有效的观点,即使用变量不是一个好的做法。虽然我认为在函数范围内使用变量是完全可以接受的,但实际上最好不要使用它们。清理所有传入字段并使其成为可用形式的更好方法是:
$sanitized_data = array();
$fields = array("url", "shoutcast_url", "site_name", "site_subtitle" , ....);

foreach ($fields as $field)
 $sanizited_data[$field] = mysql_real_escape_string($_POST[$field]);

这将为您留下一个可以使用的数组:
$sanitized_data["url"] = ....
$sanitized_data["shoutcast_url"] = ....

09-25 18:25
查看更多