#php #mysql
#php #mysql
Вопрос:
Я хочу обновлять поле со значением по умолчанию от 0 до 1 всякий раз, когда столбец совпадает со значениями post.
Проблема в том, что у меня в моей базе данных есть два столбца, я хочу использовать значения post для сравнения, существуют ли они в базе данных, и если они существуют, то следует обновить столбец, который имеет значение по умолчанию от 0 до 1. Я попробовал некоторый код, но не работает.
public function ticket()
{
// user coupon credentials
$validate_coupon = "";
$validate_coupon_err = "";
// Processing form data when form is submitted
if (isset($_POST['submit_coupon'])) {
// Check if coupon field is empty
if (empty(trim($_POST["usercoupon"]))) {
$validate_coupon_err = 'Please enter your coupon number.';
} else {
$usercoupon = htmlspecialchars($_POST["usercoupon"]);
}
$is_used = 1;
// Validate credentials
if (empty($validate_coupon_err)) {
// Prepare a select statement
$sql = "SELECT * FROM coupon WHERE coupon_value = :vcoupon LIMIT 1";
if ($stmt = $this->conn->prepare($sql)) {
// Bind variables to the prepared statement as parameters
$stmt->bindParam(':vcoupon', $param_vcoupon, PDO::PARAM_STR);
// Set parameters
$param_vcoupon = trim($_POST["usercoupon"]);
// Attempt to execute the prepared statement
if ($stmt->execute()) {
// Check if coupon exists, if yes then proceed
if ($stmt->rowCount() == 1) {
$stmt = $this->conn->prepare('UPDATE coupon
SET is_used = :used
WHERE coupon_value=:coupon');
$stmt->bindParam(':used',$is_used);
$stmt->bindParam(':coupon',$usercoupon);
if ($row = $stmt->fetch()) {
/* coupon value is correct, so start a new session and
save the value to the session */
session_start();
$_SESSION['usercoupon'] = $usercoupon;
header("location: selectexams.php");
}
else {
// Display an error message if coupon doesn't exist
$validate_coupon_err = 'No account found with that coupon.';
}
}
} else {
echo "Oops! Something went wrong. Please try again later.";
}
}
// Close statement
unset($stmt);
}
// Close connection
unset($pdo);
}
}
Я хочу, чтобы is_used
значение столбца менялось с 0 на 1 всякий раз, когда значение post совпадает со значениями в coupon_value
поле.
Комментарии:
1. Пожалуйста, установите
$param_vcoupon
переменную перед ее привязкой.2. После того, как вы
prepare('UPDATE coupon
затем вызовете$stmt->fetch()
— вы имели в видуexecute()
это вместо?3. @NigelRen это была проблема, спасибо….
4. Сначала выполните SELECT, чтобы проверить, существует ли код купона, является излишним — инструкция UPDATE повлияет на любую запись, только если это так в любом случае. Вы должны проверить это (количество затронутых строк) после ОБНОВЛЕНИЯ и полностью удалить SELECT.