У меня есть это заявление PHP SQL:
$updateCategory = "UPDATE category SET name=".$name.", description=".$description.", parent=".$parent.", active=".$active." WHERE id=".$catID."";
Каков наилучший способ написать это?
Благодаря,
Крис.
Я предлагаю вам использовать подготовленные инструкции, а не объединять строку запроса вместе:
$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);
Вы можете спросить: «Почему все эти хлопоты?» Преимущества такого подхода весьма ошеломляющие:
Вы можете форматировать его так, чтобы сделать его более читаемым.
$updateCategory = " UPDATE category SET `name` = '" . $name . "', `description` = '" . $description . "', `parent` = '" . $parent . "', `active` = '" . $active . "' WHERE `id` = '" . $catID . "'";
Я нахожу, что конкатенация запросов вызывает у меня серьезные головные боли с синтаксическими ошибками – все эти кавычки и точки разбрызгиваются, как перец. Вот как я напишу запрос:
$updateCategory = " UPDATE category SET catname = '$name', description = '$description', parent = '$parent', active = '$active' WHERE id = '$catID'";
Обратите внимание, что «имя» является зарезервированным словом и не должно использоваться в качестве имени столбца. Также, если id является целым числом, $ catID не нужно указывать.
Можешь попробовать:
$update = "update table_name SET name = '$name', email = '$email', password = '$password', phoneno = '$phoneno' WHERE id = '$id'";