编写PHP SQL Update语句的最佳方法

时间:2011-03-25 14:09:09

标签: php sql sql-update

我有这个PHP SQL语句:

$updateCategory = "UPDATE category 
                   SET name=".$name.", description=".$description.",
                       parent=".$parent.", active=".$active." 
                   WHERE id=".$catID."";

写这个的最好方法是什么?

谢谢,

克里斯。

4 个答案:

答案 0 :(得分:14)

我建议您使用预准备语句,而不是将查询字符串连接在一起:

$sql = 'UPDATE 
           category
        SET
           name=:name,
           description=:description,
           parent=:parent, 
           active=:active
        WHERE
           id=:catID';

如果你使用的是PDO,我强烈建议你这样称呼它:

$params = array(
    ':name'        => $name,
    ':description' => $description,
    ':parent'      => $parent,
    ':active'      => $active,
    ':catID'       => $catID
);

$stmt = $pdo->prepare($sql);
$stmt->execute($params);

你可能会问,“为什么这一切都麻烦?”这种方法的优点是压倒性的:

  • 您不必关心SQL注入,因为数据库驱动程序现在处理输入参数的正确转换
  • 你不必关心逃避特殊角色,但你可以专注于你想要实现的目标,而不是如何实现它: - )

答案 1 :(得分:2)

您可以将其格式化,以使其更具可读性。

$updateCategory = "
    UPDATE
        category
    SET
        `name` = '" . $name . "',
        `description` = '" . $description . "',
        `parent` = '" . $parent . "',
        `active` = '" . $active . "'
    WHERE
        `id` = '" . $catID . "'";

答案 2 :(得分:1)

我发现连接查询会让我头疼,语法错误 - 所有这些引号和点都像辣椒一样。以下是我编写查询的方法:

$updateCategory = "
    UPDATE category     
    SET catname = '$name', description = '$description', 
        parent = '$parent', active = '$active'
    WHERE id = '$catID'"; 

请注意,“name”是保留字,不应用作列名。此外,如果id是一个整数,则不需要引用$ catID。

答案 3 :(得分:0)

您可以尝试:

$update = "update table_name SET name = '$name', email = '$email', password = '$password', phoneno = '$phoneno' WHERE id = '$id'";