SQL обновляет строку, пока строка [val] <$ _ POST ['$ val];

Поэтому я хотел бы обновить строку только при выполнении нескольких условий.

1. если у меня уже есть значение для конкретной строки

$val = mysqli_real_escape_string($conn,$_POST['$result']);
$sql = "SELECT * FROM user_video WHERE video_id = '$id' AND user_uid = '".$_SESSION['u_uid'] ."'";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);
if ($resultCheck>0){

поэтому, если он у меня уже есть, мне не нужно вставлять новое значение, просто хочу ОБНОВИТЬ значение.

2. если сохраненное значение меньше, чем значение POST

if ($row['done']< $val) {
    $sql = "UPDATE user_video SET obejrzane='$val' WHERE video_id = '$id' AND user_uid='".$_SESSION['u_uid'] ."'";
    mysqli_query($conn, $sql);
}

Мой код работает нормально, когда я хочу вставить новые данные. Но когда я хочу обновить, обновляется каждый раз, даже когда $ _POST ['$ val'] меньше, чем существующий подряд ... любая помощь подойдет ?!

Полный код

<?php
session_start();
include 'db.php';
$val = mysqli_real_escape_string($conn,$_POST['$result']);
$time = mysqli_real_escape_string($conn,date("Y-m-d H:i:s"));
$id = mysqli_real_escape_string($conn,$_POST['$title']);

$sql = "SELECT * FROM user_video WHERE video_id = '$id' AND user_uid = '".$_SESSION['u_uid'] ."'";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);
if ($resultCheck>0){
    if ($row['done']< $val) {
        $sql = "UPDATE user_video SET obejrzane='$val' WHERE video_id = '$id' AND user_uid='".$_SESSION['u_uid'] ."'";
        mysqli_query($conn, $sql);
    }
    echo $resultCheck;
}
else{
    if (!empty($val)) { 
        $sql = "INSERT INTO user_video (user_uid, video_id, done, created) VALUES ('".$_SESSION['u_uid'] ."', '$id', '$val', '$time');";
        if ($conn->query($sql) === TRUE) {
            echo "New record created successfully";
        } 
        else {
            echo "Error: " . $sql . "<br>" . $conn->error;
        }
    }
}
$conn->close();

Откуда это с $row['done']?

hungrykoala 30.07.2018 08:57

Можете ли вы показать весь свой (соответствующий) код в одном блоке?

Jeto 30.07.2018 08:57

у вас есть проблема с $ row ['done'] ... iv проверьте, чтобы обновить значение, когда данные в этой строке меньше 100, но всегда обновляйте его ...

Piotr Mirosz 30.07.2018 09:13

Вы никогда не присваиваете значение $row['done']. Возможно нужен $row = mysqli_fetch_assoc($result)?

Nick 30.07.2018 09:16
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы либо не опубликовали полный код, либо ваш php выдает сообщение об ошибке undefined index 'done', поскольку вы фактически никогда не получаете доступ к значениям из вашего запроса SELECT.

Код должен выглядеть так:

<?php
....
if ($resultCheck>0){
    while($row = mysqli_fetch_array($result)){ //Fetch data from the SELECT query
        if ($row['done']< $val) {
            $sql = "UPDATE user_video SET obejrzane='$val' WHERE video_id = '$id' AND user_uid='".$_SESSION['u_uid'] ."'";
                mysqli_query($conn, $sql);
        }
    }
    echo $resultCheck;
}
....

Да, именно так: D это было так очевидно, но я забыл добавить это в свой код ... Большое спасибо за то, что указали на это.

Piotr Mirosz 30.07.2018 09:22

Другие вопросы по теме