У вас есть дополнительный пробел между кавычками в условии Where
вашего запроса Select
: '$event_id '
.Это приводит к тому, что ваш запрос не возвращает результата, даже если $event_id
действительно существует.Вот почему ваше if
условие всегда пытается выполнить Insert
, что приводит к дублирующим ошибкам при вводе.
Рассмотрим это как урок, чтобы начать использовать вместо этого Подготовленные операторы .Кроме того, ваш запрос открыт для SQL-инъекций связанных атак.
Вместо этого попробуйте следующее (с использованием подготовленных операторов):
$sql = "SELECT event_name FROM dbs_events where event_id = ?";
// Prepare the SQL statement, bind the parameters and then execute
$stmt = $conn->prepare($sql);
$stmt->bind_param('i', $event_id);
$stmt->execute();
// Fetch the results now
$result = $stmt->get_result();
// Close the statement
$stmt->close();
if ($result->num_rows > 0) {
$row = $result->fetch_assoc(); // I am not sure what you need this for
// Preparing Update query statement; binding params and execute
$sql = "UPDATE dbs_events
SET event_name = ?,
sport_id = ?
WHERE event_id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param('sii', $event_name, $sport_id, $event_id);
$stmt->execute();
$stmt->close();
} else {
// Preparing Insert query statement; binding params and execute
$sql = "INSERT INTO dbs_events
(event_id, event_name, sport_id, event_sort_order)
VALUES
(?,?,?,?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param('isii', $event_id, $event_name, $sport_id, $event_sort_order);
$stmt->execute();
$stmt->close();
}