Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408

    Problema Prepared Statement

    Salve a tutti,

    credo di avere un problema con un prepared statement.
    In una pagina ho un form con quattro id: nome, cognome, ruolo, paga. Il pulsante di invio dati ha id save.

    Nella stessa pagina ho un piccolo script in javascript che preleva i dati dal form, crea una stringa concatenata con i dati e la invia tramite ajax alla pagina nuovoImpiegato.php.
    codice:
    $('#save').click(function(){
        var nome = $('#nome').val();
        var cognome = $('#cognome').val();
        var ruolo = $('#ruolo').val();
        var paga = $('#paga').val();
                
        var dati = "nome="+nome+"&cognome="+cognome+"&ruolo="+ruolo+"&paga="+paga;
                
        $.ajax({
        type: "POST",
        url: "nuovoImpiegato.php",
        data: dati
        }).done(function(data) {
        $('#info').html(data);
        });
    });
    Nella pagina nuovoImpiegato.php ho il seguente codice che, in teoria, dovrebbe ricevere i dati concatenati dalla pagina di partenza e inserirli al posto dei ? all'interno della query. Non capisco perché non funziona.
    Codice PHP:
    include 'config.php'

    $stmt $conn->prepare("INSERT INTO impiegati (nome, cognome, ruolo, paga) VALUES (?, ?, ?, ?)");
    $stmt->bind_param($nome$cognome$ruolo$paga);
    $nome $_POST['nome'];
    $cognome $_POST['cognome'];
    $ruolo $_POST['ruolo'];
    $paga $_POST['paga'];

    if(
    $stmt->execute()){
       echo 
    "Successo.";
    }else{
       echo 
    "Fallimento.";

    Mi vengono restituiti i seguenti errori che non riesco a risolvere:
    Notice: Undefined variable: nome in C:\xampp\htdocs\www\...\nuovoImpiegato.php on line 6

    Warning: mysqli_stmt::bind_param(): Invalid type or no types specified in C:\xampp\htdocs\www\...\nuovoImpiegato.php on line 6


    Qualche indizio su dove sia l'errore?

  2. #2
    scusa ma inizializzi le varibili $nome, $cognome, ecc dopo averle usate??
    Codice PHP:
    $nome $_POST['nome'];
    $cognome $_POST['cognome'];
    $ruolo $_POST['ruolo'];
    $paga $_POST['paga'];
    $stmt $conn->prepare("INSERT INTO impiegati (nome, cognome, ruolo, paga) VALUES (?, ?, ?, ?)");
    $stmt->bind_param($nome$cognome$ruolo$paga); 

  3. #3
    Utente bannato
    Registrato dal
    Jul 2013
    Messaggi
    290
    so poco di ajax, ma mi pare che stai usando la sintassi del GET (nella chiamata) indicandola poi come POST

  4. #4
    Quote Originariamente inviata da brancomat Visualizza il messaggio
    so poco di ajax, ma mi pare che stai usando la sintassi del GET (nella chiamata) indicandola poi come POST
    la sintsassi di ajax è giusta.
    i dati vanno passati così, e poi indicihi POST o GET nell'attributo type.

    secondo me l'errore è proprio nella parte php, da come richiama / inizializza le varibili.

  5. #5
    Utente bannato
    Registrato dal
    Jul 2013
    Messaggi
    290
    Quote Originariamente inviata da fermat Visualizza il messaggio
    la sintsassi di ajax è giusta.
    i dati vanno passati così, e poi indicihi POST o GET nell'attributo type.

    secondo me l'errore è proprio nella parte php, da come richiama / inizializza le varibili.
    mi sembra molto probabile

  6. #6
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Quote Originariamente inviata da fermat Visualizza il messaggio
    la sintsassi di ajax è giusta.
    i dati vanno passati così, e poi indicihi POST o GET nell'attributo type.

    secondo me l'errore è proprio nella parte php, da come richiama / inizializza le varibili.
    Ho modificato come mi hai detto, ma mi da il seguente errore:
    Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in C:\xampp\htdocs\www\Esercizi TSW\SecondaProvaQuery\nuovoImpiegato.php on line 10

    la linea 10 è questa:
    $stmt->bind_param($nome, $cognome, $ruolo, $paga);

  7. #7
    Utente bannato
    Registrato dal
    Jul 2013
    Messaggi
    290
    Ma stai usando mysqli? Perchè mi pare che vada indicato il tipo di parametro (ad esempio ssss per 4 stringhe)
    cioè così
    Codice PHP:
        $stmt->bind_param("ssss",$nome,$cognome,$ruolo,$paga

  8. #8
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Grazie! Ho risolto, mi era sfuggito leggendo la documentazione mi sa..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.