Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Pola wyboru sprawdzają się losowo

Twoja logika ma następujące wady:Twój $_POST tablica ma klucz untrain a jego wartością jest wewnętrzna tablica kluczy room_id (ponieważ są w nazwie pola wyboru) i wartości user_id (wartości pól wyboru). W pętli foreach $room_id przypisał wartości pól wyboru, które w rzeczywistości są user_ids . Poza tym powinieneś iterować przez $_POST['untrain'] , nie wiem, gdzie bierzesz ten klucz $room->room_id z.

Zmieniłbym to na:

if(isset($_POST['submit'])){
    foreach ($_POST['untrain'] as $room_id => $user_id) {
        //sanitize $room_id
        $untrainQuery = "UPDATE room_users SET trained = '1'  WHERE room_id = $room_id";
        $db->update($untrainQuery);
    }
}

Lub, jeśli masz tablicę wszystkich identyfikatorów room_id, możesz je iterować, aby sprawdzić, czy które są zaznaczone:

if(isset($_POST['submit'])){
    foreach ($room_ids as $room_id) {
        //sanitize $room_id
        if(isset($_POST["untrain[{$room_id}]"]){//that is, if it was checked
            $trained = 1;
        }else{
            $trained = 0;
        }
        $untrainQuery = "UPDATE room_users SET trained = $trained  WHERE room_id = $room_id";
        $db->update($untrainQuery);
    }
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. BŁĄD 1045 (28000):Odmowa dostępu dla użytkownika „root”@„localhost” (przy użyciu hasła:NIE)

  2. Jak zamawiać przez FIELD z GROUP BY

  3. Jak obliczyć liczbę przeskoków między źródłem a miejscem docelowym?

  4. JS Nie można wysłać zapytania do bazy danych MySQL. BŁĄD:connection.query nie jest funkcją

  5. Uzyskaj automatyczny dostęp do DB5 do MySQL