Autor Zpráva
janky
Profil
Dobrý den, PHP kód níže mi vypisuje warning, formulář se neodešle a uživatel nezapíše do databáze.
Warning: mysqli_query() expects at most 3 parameters, 5 given in /Users/Janky/Sites/PHP/test_database/index.php on line 29

A já netuším kde mám chybu, nebo co dělám špatně.

<html>
    <head>
        <title>Registrace uživatelů</title>
    </head>
    <body>
        <h1>Registrace uživatelů</h1>
        <?php
    
        // Připojení k databázi
        $pripojeni = mysqli_connect("localhost", "root", "heslo", "testovaci");
        
        // Otestování připojení
        if (!$pripojeni) {
            echo "Chyba! ".mysqli_connect_error();
            exit;
        }
        // Nastavení kódování na UTF8
        mysqli_set_charset($pripojeni,"utf8");
        
        // Nastavení časového pásma
        date_default_timezone_set('Europe/Prague');
        
        // Vložení dat do databáze
        if($_POST) {
            $datum = date("Y-m-d H:i:s", strtotime($_POST['datum_narozeni']));
            $dotaz = mysqli_query($pripojeni, '
            INSERT INTO uzivatele (jmeno, prijmeni, datum_narozeni)
            VALUES (?,?,?)
            ',$_POST['jmeno'],$_POST['prijmeni'],$datum);
        }
                
        ?>
        <form method="post">
            Jméno:<br />
            <input type="text" name="jmeno" /><br />
            Příjmení:<br />
            <input type="text" name="prijmeni" /><br />
            Datum narození:<br />
            <input type="text" name="datum_narozeni" /><br />
            <input type="submit" value="Registrovat" />
        </form>
    </body>
</html>
CZechBoY
Profil
Musis to pouzit takto php.net/manual/en/mysqli.prepare.php
janky
Profil
Z toho manuálu po přeložení si nejsem vůbec jistý jak to mám použít na mém příkladu. Nemám tedy používat mysqli_query ?
pcmanik
Profil
janky:
V sekcii Examples je jasne ukázaný príklad.
Lonanek
Profil
mysqli_smtp_bind_param
...
$dotaz = mysqli_prepare($pripojeni, 'INSERT INTO uzivatele (jmeno, prijmeni, datum_narozeni) VALUES (?, ?, ?)');
mysqli_stmt_bind_param($dotaz, "sss", $_POST['jmeno'], $_POST['prijmeni'], $datum);
mysqli_stmt_execute($dotaz);
...

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: