如何简化php代码?

如何简化php代码?,php,sql,Php,Sql,代码是 if($_POST['update_id']) { $sql = ' UPDATE affiliate_updates SET update_subject="' . $_POST['update_subject'] . '", update_body="' . $_POST['update_body'] . '" WHERE

代码是

if($_POST['update_id']) 
{ 
    $sql = '
        UPDATE  
            affiliate_updates 
        SET 
            update_subject="' . $_POST['update_subject'] . '",
            update_body="' . $_POST['update_body'] . '"
        WHERE
            update_id="' . $_POST['update_id'] . '"
        LIMIT 1 
        ';
    mysql_query($sql);
    header('Location: affiliate_updates?update_id=' . $_POST['update_id']);
    exit;
} 
如何修剪上述代码或简化代码

任何想法或样本代码请告诉我


如何使用上述代码。任何人都可以向我展示示例代码吗?

您可以使用PHP的PDO库,它是数据库的OOP处理程序。其优点是,您可以根据需要更改数据库类型,而无需替换每个mysql\u查询

还有,您在代码中做了一些非常糟糕的事情。在查询中使用未验证的用户输入。使用准备好的PDO语句。或者使用mysql\u real\u escape\u string$\u POST['somevar']

这里的PDO也一样:

$db = // already instanced somewhere earlier (PDO Instance)
$query = $db->prepare('UPDATE affiliate_updates SET update_subject = ?, update_body = ? WHERE update_id = ? LIMIT 1');
$query->execute(array($_POST['update_subject'], $_POST['update_body'], $_POST['update_id']));
header('Location: affiliate_updates?update_id=' . $_POST['update_id']);

我建议使用一个小的helper函数从$\u POST数组和允许的字段列表中生成正确的SET语句

function dbSet($fields) {
  $set='';
  foreach ($fields as $field) {
    if (isset($_POST[$field])) {
      $set.="`$field`='".mysql_real_escape_string($_POST[$field])."', ";
    }
  }
  return substr($set, 0, -2); 
}
所以,你的代码变成了

$id  = intval();
$set = dbSet(array("update_subject","update_body"));
$sql = "UPDATE affiliate_updates SET $set WHERE update_id=$id";
mysql_query($sql) or trigger_error(mysql_error()." in ".$sql);  
但为了更方便地编码,您可能希望开发一些占位符系统,以及一些抽象层来访问数据库。因此,它可能会为您节省更多的线路:

$set = $db->filterPost(array("update_subject","update_body"));
$db->run("UPDATE affiliate_updates SET ?u WHERE update_id=?i",$set,$_POST['update_id']);

我喜欢您选择的SQL注入方法。请使用占位符。他们将简化代码并使其安全。你为什么需要在这段代码上注入sql?@col。实际上,我使用的是不同的sql查询,使用的是单个php代码。所以,我希望我的代码像sql查询一样存储不同的文件我只是想使用单行php代码访问sql查询任何可能的方法都有世界上的每个人都使用不同的sql查询使用单个php代码。这就是变量的用途。你的代码非常适合这个。我还是不明白你的理由。你似乎把SQL注入和其他东西混淆了。这段代码看起来不太枯燥:+1因为不推荐mysql\u real\u escape\u string。@Col.Shrapnel这段代码非常简洁。如果需要动态生成SQL查询,那么-当然,只使用代码,最好使用占位符。。。。但是如果不是,KISS。好处是,如果需要,您可以更改数据库类型,而不必替换每个mysql\u查询。查询本身呢?@pst我的代码要简单得多。至少它适合屏幕: