• User Newbie

    mysqli_query() ritorna un array vuoto anche se presente record in tabella

    Ciao a tutti!
    Sono al mio primo pgm in html/php.
    Ho un problema che non riesco a risolvere e chiedo aiuto a qualche esperto che ringrazio anticipatamente.
    Creato db; popolato da file csv; eseguito elenco record da visualizzare in tabella <table>; ad ogni record/riga tabella mostrata ho possibilità di modificare o eliminare record con pulstante ref xxxx.php passado le variabili che formano la kiave del db.(due campi).
    Alla chiamata fino ad alcuni giorni fa funzionava e aprivo scheda con i dati già registrati e pronti ad essere modificati.
    Da qualche giorno sembra che la query non restituisca dati

    <?php
    include "includes/header.php";
    include "includes/connetti_db.php";
    $avviso ="";
    $num=50;
    $ATT="MF000X";
    $RAY="00";
    dati passati da altra pagina
    $CODATT = $_GET'var1'];
    $RAYON = $_GET'var2'];

    $sql = 'SELECT * FROM fornitori WHERE FO_CODATT = " '. $CODATT .' " AND FO_RAYON = " '. $RAYON .' " ';
    $result = mysqli_query($connessioneDB , $sql);
    if(!$result) { $avviso = ('Query fallita' . mysqli_error($connessioneDB) . mysqli_connect_errno());
    } else { $avviso = ('Query ok ' . mysqli_error($connessioneDB) . mysqli_connect_errno());
    $num ++;}
    while ($row = mysqli_fetch_array($result)) {
    // istruzioni$num ++;}
    /mysqli_free_result($result);/
    <h4><?php echo $avviso ."<br>" . $CODATT ."<br>" . $RAYON ."<br>" . $num ."<br>" . $row ; ?></h4>

    ll risultato mi indica che non entra nel ciclo while pur essendo i dati passati ( $CODATT e $RAYON) corretti e presenti nel DB:
    Query ok 0
    MF000X
    00
    51

    Ho provato tutte le combinazioni nel costrutto della query che conosco ma il risultato è sempre lo stesso!!
    Le variabili $ATT e $RAY le ho inserite in prova e alternativa per bypassare i valori ricevuti dalla pagina e valorizzate manualmente con dati presenti in tabella

    /$query = "SELECT * FROM fornitori WHERE FO_CODATT =' . $ATT . ' AND FO_RAYON =' . $RAY . ' ";/
    /$query= 'SELECT * FROM fornitori WHERE FO_CODATT =". $ATT . " AND FO_RAYON =" . $RAY. " ';/
    /$query = 'SELECT * FROM fornitori WHERE FO_CODATT = " '. $ATT .' " AND FO_RAYON = " '. $RAY .' " ';/
    /$query = "SELECT * FROM fornitori WHERE FO_CODATT =('{$ATT}') AND FO_RAYON =('{$RAY}')";/
    $query = "SELECT * FROM fornitori WHERE FO_CODATT =('{$CODATT}') AND FO_RAYON =('{$RAYON}')";
    Non so cosa abbia modificato e più come fare a risolvere


  • Moderatore

    $row è un array non potrai mai stamparlo con echo
    altra cosa, mancano un bel po' di basi nel tuo codice, non hai escapato i parametri che ti arrivano da get, non li verifichi (tipo dati, vuoto e non vuoti etc)
    inoltre, FO_CODATT =('{$CODATT}') perchè usi queste parentesi tonde? non ne hai bisogno, altro consiglo per le query o comunque le stringhe che utilizzano parametri, utilizza sempre sprintf che ti fornisce una lettura della tua stringa più semplice.

    Se vuoi posta qualche dato ed il tuo DB ed il tuo codice sistemato, così ti possiamo aiutare.