Лучший способ написать PHP SQL Update Statement - PullRequest
2 голосов
/ 25 марта 2011

У меня есть PHP-оператор SQL:

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

Как лучше написать это?

Спасибо,

Крис.

Ответы [ 4 ]

14 голосов
/ 25 марта 2011

Я предлагаю вам использовать подготовленные операторы вместо конкатенации строки запроса вместе:

$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, поскольку драйвер базы данных теперь обрабатывает правильное преобразование входных параметров
  • Вам не нужно заботиться о экранировании специальных символов, но вы можете сконцентрироваться на том, чего хотите достичь, а не на том, как этого добиться: -)
2 голосов
/ 25 марта 2011

Вы можете отформатировать его так, чтобы сделать его более читабельным.

$updateCategory = "
    UPDATE
        category
    SET
        `name` = '" . $name . "',
        `description` = '" . $description . "',
        `parent` = '" . $parent . "',
        `active` = '" . $active . "'
    WHERE
        `id` = '" . $catID . "'";
1 голос
/ 25 марта 2011

Я обнаружил, что объединение запросов вызывает у меня сильные головные боли из-за синтаксических ошибок - все эти кавычки и точки разбросаны, как перец.Вот как бы я написал запрос:

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

Обратите внимание, что «имя» является зарезервированным словом и не должно использоваться в качестве имени столбца.Также, если id является целым числом, $ catID не нужно заключать в кавычки.

0 голосов
/ 11 сентября 2014

Вы можете попробовать:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...