Autor Zpráva
Jcas
Profil *
Uložím data do DB a hned na dalším řádku php je chci vybrat. Chci zjistit, jaké bylo přiřazeno `id`.
Mám tušení, že chybu mi to vyhazuje proto, že SELECT je moc rychlý a php se snaží vybrat data dřív, než je o dva řádky stihne pomocí INSERT uložit.
Je to možné? Jak se to řeší? Lze zpomalit php script?
jenikkozak
Profil
Na zjištění id posledního vloženého záznamu použij funkci mysql_insert_id či její alternativy.

Je to možné?
Nejspíše ne. Jakou chybu ti to vyhazuje?
Jcas
Profil *
Jakou chybu ti to vyhazuje?
Mou vlastní chybovou hlášku.
    $nick = $mysqli->real_escape_string($_POST['nick']);        //ošetření dat pro DB
    $email = $mysqli->real_escape_string($_POST['email']);    
    
    // uložit data do DB             |---id---|---nick---|---email---|---heslo---|---potvrzeni---|---kod---|
    $statement = $mysqli->prepare("INSERT INTO `USER` VALUES (?,?,?,?,?,?)");
    if(!$statement) { presmerujNaChybu(57); }
    $statement->bind_param("isssis", $a=0, $nick, $email, crypt($_POST['heslo']), $e=0, vrat_nahodny_kod());    
    $statement->execute();
    $statement->close();

    // nachystat email a odeslat
    $query = "SELECT * FROM `USER` WHERE `nick` = '" . $nick . "'";
    if ($result = $mysqli->query($query)) {
            $row = $result->fetch_assoc();            /* fetch associative array */           
            $result->close();                                /* free result set */
            
    
    $mail = $_POST['email'];
    $predmet = 'Registrace do databáze chovatelů';
    $zprava = "Děkujeme za registraci.\r\n Pro dokončení registrace navštivte prosím následují odkaz\r\n ."&nick=".$_row['nick']."&id=".$_row['id]http://www.zocschmoravskebranice.eu/DB-chovatelu/registrace.php.?kod=".$row['kod']."&nick=".$_row['nick']."&id=".$_row['id'];    
    
    if (cs_mail($mail, $predmet, $zprava, "From: zocschmoravskebranice@seznam.cz".PHP_EOL)) {
        header("Location: konec.php?kod=".$row['kod']."&nick=".$_row['nick']."&id=".$_row['id']);    // přesměrovat na konečnou stránku
        exit();
            }    else { presmerujNaChybu(55); }    
        }    else { presmerujNaChybu(56); }
Tato podmínka se nesplní.
if ($result = $mysqli->query($query))



Tak jsem zase založil zbytečné vlákno. Vyhazovalo mi to mou vlastní chybovou hlášku 56 - "nepodařilo se načíst data z DB", ale vyhazoval ji soubor konec.php.

Omlouvám se a děkuji

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: