Как исправить ошибку? Сам в PHP и БД недавно, решил сделать форму по гайду в интернете, но не понимаю почему появляется эта ошибка... Есть две страницы, одна с формой, другая с обновлением данных в таблице MY SQL. Ниже файл для обновления данных.
Ошибка при обновлении записи в базе данных:
SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens.
$db = new PDO("mysql:host=$db_server;dbname=$db_name", $db_user, $db_password,array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES utf8"));
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$ID = $_POST['ID'];
$SV = $_POST['SV'];
$OK = $_POST['RESPONSE'];
$AXT = $_POST['AXT'];
$TRANSFERS = $_POST['TRANSFERS'];
$CONVERSION = $_POST['CONVERSION'];
$PERFORMANCE = $_POST['PERFORMANCE'];
$APPEAL = $_POST['APPEAL'];
$TICKETS = $_POST['TICKETS'];
if(empty($ID)){
echo "Вы не задали ID строки для обновления данных!";
return;
}
$update_columns = array();
if(trim($ID) !== "") { $update_columns[] = "ID = :ID"; }
if(trim($SV) !== "") { $update_columns[] = "SV = :SV"; }
if(trim($RESPONSE) !== "") { $update_columns[] = "RESPONSE = :RESPONSE"; }
if(trim($AXT) !== "") { $update_columns[] = "AXT = :AXT"; }
if(trim($TRANSFERS) !== "") { $update_columns[] = "TRANSFERS = :TRANSFERS"; }
if(trim($CONVERSION) !== "") { $update_columns[] = "CONVERSION = :CONVERSION"; }
if(trim($PERFORMANCE) !== "") { $update_columns[] = "PERFORMANCE = :PERFORMANCE"; }
if(trim($APPEAL) !== "") { $update_columns[] = "APPEAL = :APPEAL"; }
if(trim($TICKETS) !== "") { $update_columns[] = "TICKETS = :TICKETS"; }
if($update_columns > 0){
$sql = "UPDATE supervisor SET " . implode(', ', $update_columns) . 'WHERE ID=:ID';
$statement = $db->prepare($sql);
$statement->bindParam(":ID", $ID);
if(trim($SV) !== ""){
$statement->bindParam(":SV", $SV);
}
if(trim($RESPONSE) !== ""){
$statement->bindParam(":RESPONSE", $RESPONSE);
}
if(trim($AXT) !== ""){
$statement->bindParam(":AXT", $AXT);
}
if(trim($TRANSFERS) !== ""){
$statement->bindParam(":TRANSFERS", $TRANSFERS);
}
if(trim($CONVERSION) !== ""){
$statement->bindParam(":CONVERSION", $CONVERSION);
}
if(trim($PERFORMANCE) !== ""){
$statement->bindParam(":PERFORMANCE", $PERFORMANCE);
}
if(trim($APPEAL) !== ""){
$statement->bindParam(":APPEAL", $APPEAL);
}
if(trim($TICKETS) !== ""){
$statement->bindParam(":TICKETS", $TICKETS);
}
$statement->execute();
echo "Строка c ID: " . $ID . " успешно обновлена!";
}
}
catch(PDOException $e) {
echo "Ошибка при обновлении записи в базе данных: " . $e->getMessage();
}
$db = null;
?>
Также форма для отправки данных:
<form action="update.php" method="POST">
<div>
label for='ID'>Выберите ID супервайзера:</label
input type='text' id='ID' name='ID' required
</div>
<div>
label for='SV'>Супервайзер:</label
input type='text' id='SV' name='SV'
</div>