Sam*_*Sam 2 php mysql if-statement
$ url = mysql_real_escape_string($ _ POST ['url']); $ shoutcast_url = mysql_real_escape_string($ _ POST ['shoutcast_url']); $ site_name = mysql_real_escape_string($ _ POST ['site_name']); $ site_subtitle = mysql_real_escape_string($ _ POST ['site_subtitle']); $ email_suffix = mysql_real_escape_string($ _ POST ['email_suffix']); $ logo_name = mysql_real_escape_string($ _ POST ['logo_name']); $ twitter_username = mysql_real_escape_string($ _ 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]);
Run Code Online (Sandbox Code Playgroud)
这里唯一需要注意的是,你必须小心不要将变量名称放入$fields
覆盖现有变量的名称中.
更新: Col.Shrapnel提出正确有效的观点,即使用变量变量不是一个好习惯.虽然我认为在函数范围内使用变量是完全可以接受的,但最好不要使用它们.清理所有传入字段并将其置于可用形式的更好方法是:
$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]);
Run Code Online (Sandbox Code Playgroud)
这将为您提供一个可以使用的数组:
$sanitized_data["url"] = ....
$sanitized_data["shoutcast_url"] = ....
Run Code Online (Sandbox Code Playgroud)