• User

    utilizzare il dato della somma

    Salve a tutti.
    Ho elaborato la seguente query:
    [PHP]$query = " SELECT SUM(notti) FROM notturni WHERE abitante = '$cod' and data_entrata > '$newdate' ";
    $sere = $mysqli->query($query);
    echo $sere ;[/PHP]

    Su PhpMyAdmin la query funziona.
    Sul sito invece ricevo questo messaggio: ```
    Recoverable fatal error: Object of class mysqli_result could not be converted to string

    
    Come posso fare per utilizzare il dato ?
    Grazie

  • User Attivo

    Ciao,

    non puoi fare l'echo di un oggetto, puoi usare la funzione var_dump() che ti stampa il tipo di dato e il suo contenuto.

    Per stampare il risultato della query devi utilizzare la funzione fetch_array() in questo modo

    [PHP]
    <?php

    $query = "SELECT SUM(notti) AS notti FROM notturni WHERE abitante = '$cod' and data_entrata > '$newdate'";
    $result = $mysqli->query($query);
    
    while($row = $result->fetch_array(MYSQLI_ASSOC)) {
        echo $row['notti'];
    }
    

    [/PHP]

    N.B. Il tuo codice è vulnerabile alla SQL Injection, dovresti sanificare l'input e utilizzare le prepared statement.

    Ti lascio queste risorse

    php.net/manual/en/mysqli.prepare.php

    it.phptherightway.com/


  • User

    Grazie flaviors200 della esaustiva risposta.
    Ho seguito le tue indicazioni.

    Prima però volevo sottolineare che nello stesso file faccio un'altra query.
    Per questo avevo usato un'altra variabile $sere e non $result.
    Non so se può creare un conflitto con la precedente query. :bho:

    Detto questo una volta eseguito il codice che mi hai suggerito, ricevo questo messaggio:

    Notice: Undefined index: notti in ... on line 111
    Grazie ancora per la pazienza


  • User

    [PHP]
    $query = " SELECT SUM(notti) FROM notturni WHERE abitante = '$cod' and data_entrata > '$newdate' ";
    $result = $mysqli->query($query);
    while($row = $result->fetch_array(MYSQLI_ASSOC)) {

    print_r( $row ); // debug code
    echo $row['notti']; }
    ?>[/PHP]

    Ho aggiunto print_r( $row ) e così ottengo questa risposta:

    Array ( [SUM(notti)] => 3 )
    Notice: Undefined index: notti in ....

    Il valore 3 calcolato da SUM(notti) va bene. Perchè mi dice che non esiste ?


  • User Attivo

    In realtà non esiste nessuna key "notti", bensì SUM(notti), per farlo funzionare come vuoi tu dovresti dare un nome a quella somma di coseguenza la query dovrebbe essere così:

    $query = " SELECT SUM(notti) as sommaNotti FROM notturni WHERE abitante = '$cod' and data_entrata > '$newdate' ";

    per stampare poi:
    echo $row['sommaNotti'];