PDO更新クエリコードの使用に問題があります。情報を変更して保存ボタンをクリックして個人の1レコードを編集すると、1レコードのみを更新するすべてのレコードに影響します。すべてのレコードは同じ情報を持っています。他のレコードに影響を与えずに1つのレコードを更新するにはどうすればよいですか?前もって感謝します。コミュニティのwikiとして投稿PHP PDO更新クエリは、実行時にすべての行に影響します
<?php
include ('includes/connection.php');
$id = isset($_GET['id']) ? $_GET['id']: die('Error: Record ID not found.');
try {
$query_select = "SELECT id, profile_picture, first_name, last_name, gender, age, date_birth FROM tbl_records WHERE id = ? LIMIT 0,1";
$query_statement = $db_connection->prepare($query_select);
$query_statement->bindParam(1, $id);
$query_statement->execute();
$row = $query_statement->fetch();
$profilePicture = $row['profile_picture'];
$firstName = $row['first_name'];
$lastName = $row['last_name'];
$gender = $row['gender'];
$age = $row['age'];
$dateBirth = $row['date_birth'];
}
catch(PDOException $e) {
die('Error 1: '. $e->getMessage());
}
if($_POST) {
try {
$query_update = "UPDATE tbl_records SET
profile_picture = :t_profile_picture,
first_name = :t_first_name,
last_name = :t_last_name,
gender = :t_gender,
age = :t_age;
date_birth = :t_date_birth
WHERE id = :t_id";
$query_statement = $db_connection->prepare($query_update);
$profilePicture = htmlspecialchars(strip_tags($_POST['profile-picture']));
$firstName = htmlspecialchars(strip_tags($_POST['first-name']));
$lastName = htmlspecialchars(strip_tags($_POST['last-name']));
$gender = htmlspecialchars(strip_tags($_POST['gender']));
$age = htmlspecialchars(strip_tags($_POST['age']));
$dateBirth = htmlspecialchars(strip_tags($_POST['date-birth']));
$query_statement->bindParam(':t_profile_picture', $profilePicture);
$query_statement->bindParam(':t_first_name', $firstName);
$query_statement->bindParam(':t_last_name', $lastName);
$query_statement->bindParam(':t_gender', $gender);
$query_statement->bindParam(':t_age', $age);
$query_statement->bindParam(':t_date_birth', $dateBirth);
$query_statement->bindParam(':t_id', $id);
if($query_statement->execute()) {
echo "<div class='alert alert-success' role='start'>Record was updated</div>";
}
else {
echo "<div class='alert alert-danger' role='start'>Unable to update the record.</div>";
}
echo var_dump($query_statement->rowCount());
}
catch(PDOException $e) {
die('ERROR 2: ' . $e->getMessage());
}
}
?>
<html>
<body>
<form action="update.php?id=<?php echo htmlspecialchars($id); ?>" method="post">
<input type="hidden" name="id" value="<?php echo htmlspecialchars($id, ENT_QUOTES); ?>" />
<input type="file" name="profile-picture" value="<?php echo htmlspecialchars($profilePicture, ENT_QUOTES); ?>" />
<label for="first-name">First name:</label> <br />
<input type="text" name="first-name" value="<?php echo htmlspecialchars($firstName, ENT_QUOTES); ?>" /> <br />
<label for="last-name">Last name:</label> <br />
<input type="text" name="last-name" value="<?php echo htmlspecialchars($lastName, ENT_QUOTES); ?>" /> <br />
<label for="gender">Gender:</label> <br />
<input type="text" name="gender" value="<?php echo htmlspecialchars($gender); ?>" /> <br />
<label for="age">Age:</label> <br />
<input type="text" name="age" value="<?php echo htmlspecialchars($age); ?>" /> <br />
<label for="date-birth">Date of Birth:</label> <br />
<input type="date" name="date-birth" value="<?php echo htmlspecialchars($dateBirth); ?>" /> <br />
<input class="button-style" type="submit" value="SAVE" />
</form>
</body>
</html>
'age =:t_age;' <<<文末。それはカンマでなければなりません。それがすべてを更新している理由です。セミコロンは実際には有効な文字であり、エラーは発生しません。 'date_birth'カラムも更新されません。 –
は、タイプミスとしてクローズすると投票しました。 –
@ Fred-ii-ありがとうございます。私は数時間を要した問題を探しています。その原因は単にタイプミスです。<ありがとう! – lvlzero