Я пытаюсь обновить базу данных, в которой отслеживается домашнее хозяйство. Он хранит главу домохозяйства как клиента в отдельной таблице, но использует их ID в качестве внешнего ключа в таблице домохозяйства. Мне нужно добавить несколько человек в семью. Я пробовал использовать только оператор UPDATE, но он заменял данные только тогда, когда я пытался добавить сразу несколько человек. Я пытаюсь сделать это, не используя операторы DELETE и INSERT из опасения потерять информацию. Для получения дополнительной информации, всем этим управляет PHP Веб-сайт без жира, потому что моя школа учит этому.
function editHousehold($id, $name, $age, $gender){
$id = $this->getLastId();
$sql= "UPDATE Household SET `name`=:name, age=:age, gender=:gender WHERE
Guests_ClientId=:Guests_ClientId";
$statement = $this->dbh->prepare($sql);
$statement->bindParam(':name', $name, PDO::PARAM_STR);
$statement->bindParam(':age', $age, PDO::PARAM_STR);
$statement->bindParam(':gender', $gender, PDO::PARAM_STR);
$statement->bindParam(':Guests_ClientId', $id, PDO::PARAM_INT);
$statement->execute();
}
Против
function editNeeds($id,$resource,$date, $amount, $voucher, $checkNum){
$sql = "DELETE FROM Needs WHERE Guests_ClientId = $id";
$statement = $this->dbh->prepare($sql);
$statement->execute();
$id = $this->getLastId();
$sql= "INSERT INTO Needs (resource, visitDate, amount, voucher, checkNum, Guests_ClientId)
VALUES (:resource, :date , :amount, :voucher, :checkNum, $id)";
$statement = $this->dbh->prepare($sql);
$statement->bindParam(':resource', $resource, PDO::PARAM_STR);
$statement->bindParam(':amount', $amount, PDO::PARAM_STR);
$statement->bindParam(':voucher', $voucher, PDO::PARAM_STR);
$statement->bindParam(':checkNum', $checkNum, PDO::PARAM_STR);
$statement->bindParam(':date', $date, PDO::PARAM_STR);
$statement->execute();
}
/**
* edit households, removes the old and replaces witha new set of values
* @param $id
* @param $name
* @param $age
* @param $gender
*/
function editHousehold($id, $name, $age, $gender){
$sql = "DELETE FROM Household WHERE Guests_ClientId = $id";
$statement = $this->dbh->prepare($sql);
$statement->execute();
$id = $this->getLastId();
$sql= "INSERT INTO Household (name, age, gender,Guests_ClientId)
VALUES (:name,:age,:gender,$id)";
$statement = $this->dbh->prepare($sql);
$statement->bindParam(':name', $name, PDO::PARAM_STR);
$statement->bindParam(':age', $age, PDO::PARAM_STR);
$statement->bindParam(':gender', $gender, PDO::PARAM_STR);
$statement->execute();
}