• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pobieranie id ostatnio dodanego rekordu

Aruba Cloud - Virtual Private Server VPS
0 głosów
654 wizyt
pytanie zadane 21 czerwca 2022 w PHP przez jakubjordanek Obywatel (1,340 p.)

Cześć, robię obecnie system przesyłania plików na stronę i chciałbym, żeby plik miał nazwę taką jak id rekordu w sql. Czyli wypełniam cały formularz klikam "Upload" i dodaje się nowy rekord do bazy danych i przesyła plik i ten plik ma nazwę równą temu id dodanego za pomocą auto_increment oczywiście. Niestety funkcja insert_id nie chcę działać i zawsze pokazuje 0. Czy ma ktoś jakiś pomysł na rozwiązanie tego problemu? Załączam część kodu i zdjęcie struktury bazy.

<?php
    class Upload extends Database
    {
        public function uploadFile($id, $title)
        {
            $status = true;

            if (empty($title))
            {
                $status = false;
            }

            if ($_FILES["file"]["size"] == 0)
            {
                $status = false;
            }

            if ($status)
            {
                $sql = "INSERT INTO library VALUES (NULL, ".$id.", NULL, '".$title."', '".date("Y-m-d")."')";
                if ($this->connect()->query($sql))
                {
                    move_uploaded_file($_FILES["file"]["tmp_name"], "library/".$this->connect()->insert_id.".mp3");
                    echo $this->connect()->insert_id;
                }
            }
            else
            {
                header("Location: ../upload.php");
                exit();
            }
        }
    }
?>

komentarz 21 czerwca 2022 przez VBService Ekspert (256,600 p.)

A gdy zapiszesz tak sql-a

$sql = "INSERT INTO library (`artist_id`, `title`, `date`) "
     . "VALUES ($id, '$title', '".date('Y-m-d')."')";

 

komentarz 21 czerwca 2022 przez jakubjordanek Obywatel (1,340 p.)
próbowałem tak i niestety też nie działa
komentarz 23 czerwca 2022 przez Ehlert Ekspert (214,940 p.)
Do takich rzeczy używa się UUID. Opcjonalnie masz też nanoid oraz md5.

2 odpowiedzi

0 głosów
odpowiedź 21 czerwca 2022 przez AnimaVillis Stary wyjadacz (13,190 p.)
Może na okrętkę, ale spróbowałbym najpierw pobrać ostatnie ID, które masz w bazie i na jego podstawie przypisywał odpowiednio id do pliku uwzględniając inkrementacje w bazie danych :)
komentarz 21 czerwca 2022 przez jakubjordanek Obywatel (1,340 p.)
zadziałał ten sposób jednak wolałbym się zorientować wokół insert_id i dowiedzieć się czemu nie działa
2
komentarz 22 czerwca 2022 przez bulgotnik86 Gaduła (3,040 p.)
A wrzuć jeszcze klasę Database
0 głosów
odpowiedź 22 czerwca 2022 przez VBService Ekspert (256,600 p.)
edycja 23 czerwca 2022 przez VBService

Prawdopodobnie jest problem w(z) $this->connect()

@bulgotnik86

A wrzuć jeszcze klasę Database

 

próbowałeś taki workaround

SELECT id AS `insert_id` FROM library WHERE id = LAST_INSERT_ID()

 

$sql = "INSERT INTO library VALUES (NULL, ".$id.", NULL, '".$title."', '".date("Y-m-d")."')";
if ($this->connect()->query($sql))
{
    $sql = "SELECT id AS `insert_id` FROM library WHERE id = LAST_INSERT_ID()";
    $res = $this->connect()->query($sql); 
    // itd.

    // ...
}

 

Podobne pytania

0 głosów
1 odpowiedź 1,729 wizyt
pytanie zadane 17 stycznia 2018 w SQL, bazy danych przez Bartess Gaduła (3,630 p.)
0 głosów
1 odpowiedź 234 wizyt
0 głosów
2 odpowiedzi 1,109 wizyt
pytanie zadane 15 lutego 2018 w PHP przez daniel2k Obywatel (1,380 p.)

93,335 zapytań

142,331 odpowiedzi

322,415 komentarzy

62,670 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...