Чтобы заменить жестко запрограммированные значения динамическими значениями из $_POST
, вы можете использовать подготовленные операторы.Сначала вам нужно убедиться, что с isset
значения были отправлены в ваш скрипт.Затем вы должны подготовить оператор SQL с заполнителями и выполнить передачу в массив с вашими данными.
Этот пример сценария показывает, как это можно сделать:
// Connection data (server_address, database, name, poassword)
$hostdb = 'localhost';
$namedb = 'tests';
$userdb = 'username';
$passdb = 'password';
$charset = 'utf8'; // you should be using utf8mb4 instead
if (isset($_POST['name'], $_POST['link'], $_POST['id'])) {
// Connect and create the PDO object
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false,
];
$conn = new PDO("mysql:host=$hostdb;dbname=$namedb;charset=$charset", $userdb, $passdb, $options);
// changes data in "name" si "link" colummns, where id=3
$stmt = $conn->prepare('UPDATE `sites` SET `name`=:name, `link`=:link WHERE `id`=:id');
$stmt->execute([
'name' => $_POST['name'],
'link' => $_POST['link'],
'id' => $_POST['id'],
]);
// Shows the number of affected rows
echo 'Affected rows : '. $stmt->rowCount();
}
Если вы не уверены в правильном использовании PDO, вы можете взглянуть на это хорошо известное руководство по PDO https://phpdelusions.net/pdo