Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026

    Store procedure invocate in php

    Buongiorno.
    Ho scritto delle brevi store procedure in mysql. Con phpmyadmin funzionano correttamente.
    Solo che quando le invoco nel php non funzionano:
    codice:
    include('database.php');
     $sql = 'CALL estrazioniDati()';
     $res= mysql_query("CALL estrazioniDati();") or die(mysql_error());
    
    // scorre un record alla volta letta dalla nostra query
    echo "<table>";
    while($row = mysql_fetch_array($res)){
     ?>
    
        <tr>
            <td><?php echo $row['nome'];?></td>
            <td><?php echo $row['cognome'];?></td>
            <td><?php echo $row['matricola'];?></td>
            <td><a href="cancella.php?id=<?php echo $row['id'];?>">Cancella</a></td>
    .....
    .....
    nella pagina browser mi scrivere:
    codice:
    Incorrect number of arguments for PROCEDURE azienda.estrazioniDati; expected 3, got 0

  2. #2
    Stando all'errore, la procedure si aspetta 3 argomenti e non gliene passi nessuno. Puoi postare la definizione della procedure?

  3. #3
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Quote Originariamente inviata da k.b Visualizza il messaggio
    Stando all'errore, la procedure si aspetta 3 argomenti e non gliene passi nessuno. Puoi postare la definizione della procedure?
    Qui c'è la procedura:
    codice:
    CREATE DEFINER=`root`@`localhost` PROCEDURE `estrazioniDati`(OUT nomeP VARCHAR(255), OUT cognomeP VARCHAR(255), OUT matricolaP VARCHAR(255))
    BEGIN
    SELECT nome,cognome,matricola FROM dipendenti;
    END

  4. #4
    Infatti hai definito la procedure con 3 parametri OUT, pero' poi non li passi nella chiamata (e comunque non li usi nella procedure), quindi puoi eliminarli e definirla cosi':

    codice:
    CREATE DEFINER=`root`@`localhost` PROCEDURE `estrazioniDati`()
    BEGIN
        SELECT nome,cognome,matricola FROM dipendenti;
    END

  5. #5
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Quote Originariamente inviata da k.b Visualizza il messaggio
    Infatti hai definito la procedure con 3 parametri OUT, pero' poi non li passi nella chiamata (e comunque non li usi nella procedure), quindi puoi eliminarli e definirla cosi':

    codice:
    CREATE DEFINER=`root`@`localhost` PROCEDURE `estrazioniDati`()
    BEGIN
        SELECT nome,cognome,matricola FROM dipendenti;
    END
    Grazie, adesso funziona, ma la parola OUT allora quando dovrei metterla? Pensavo che impostava il flusso di uscita dal database

  6. #6
    I parametri OUT ti permettono di passare una variable alla procedure e redirigere l'output della query in quella variabile, nel caso quel risultato potesse servirti piu' volte in query successive.

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.