Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    42

    fetch_array dà problemi

    codice:
    $mysqli = new mysqli("localhost", "root", "password", "genAG");
        if (mysqli_connect_errno()) {
                                     echo "Errore in connessione al DBMS: ".mysqli_connect_error();
                                     exit();
                                     }
         else {
               $qU = $mysqli->query("SELECT user FROM userD");
               $qT = $mysqli->query("SHOW TABLES");
               $charD[] = "";
               if (mysqli_connect_errno()) {
                                            echo "Errore in connessione al DBMS: ".mysqli_connect_error();
                                            exit();
                                            }
               else {
                     $tabS['0'] = "currM";
                     while($rowT = $qT->fetch_array(MYSQLI_ASSOC)) {
                                                                    if($rowT['Tables_in_genAG'] != "userD" AND
                                                                       $rowT['Tables_in_genAG'] != "currM") {
                                                                                                             array_push($tabS, $rowT['Tables_in_genAG']);
                                                                                                             }
                                                                    }
                     while($row = $qU->fetch_array(MYSQLI_ASSOC)) {
                                                                   if($row['user']) {
                                                                                     $user = $row['user'];
                                                                                     $qWR = "";
                                                                                     for($i = "0"; $i < count($tabS); $i++) {
                                                                                                                             $qWR = $qWR." SELECT win FROM ".$tabS[$i]." WHERE user = ".$user;
                                                                                                                             $i++;
                                                                                                                             if($i < count($tabS)) {
                                                                                                                                                    $qWR = $qWR." UNION ";
                                                                                                                                                    }
                                                                                                                             $i--;
                                                                                                                             }
                                                                                     $qW = $mysqli->query($qWR);
                                                                                     $tick = "0";
                                                                                     $win = "0";
                                                                                     while($rowW = $qW->fetch_array(MYSQLI_ASSOC)) {
                                                                                                                                    if($rowW['win']) {
                                                                                                                                                      $win = $win+$rowW['win'];
                                                                                                                                                      $tick++;
                                                                                                                                                      }
                                                                                                                                    }
                                                                                     $rec['0'] = $user;
                                                                                     $rec['1'] = $tick;
                                                                                     $rec['2'] = $win;
                                                                                     array_push($charD, $rec);
                                                                                     echo $rec['0']." ".$rec['1']." ".$rec['2'];
                                                                                     echo "</br>";
                                                                                     }
    La parte incriminata è quella in grassetto se la commento lo script và altrimenti mi ritrovo la pagina bianca (come quando ci sono errori di sintassi da parte dell' utente). Ho già provato a riscrivere lo script in maniera diversa e il risultato è lo stesso quando arriva la parte in grassetto non funzia più niente. Il nocciolo della questione è quella parte.
    Domando:
    Essendoci tanti cicli uno dentro un' altro può dare problemi?
    Il fetch_array può essere messo dentro altri fetch_array?
    Grazie.

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, potresti mettere $qW = $mysqli->query($qWR) or die(mysql_error()); ...qualcosa per vedere se c'e' un errore a priori nella query.
    Di cicli ne puoi annidare quanti ne vuoi... ovviamente se diventano troppi o troppo pesanti puo essre che vada in timeout... Dipenda da quanti dati vengono prelevati.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    42
    Ho soperto che il prob non è il fetch_array mail query precedente.
    codice:
    $qW = $mysqli->query($qWR);
    Se sostituisco $qWR con una comune query tra virgolette lo script torna a funzionare.
    Come è possibile?

  4. #4
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    echo della query?? provala direttamente su DB e vedi se c'e' qualche errore di sintassi.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    42
    Già fatto, la query è;
    codice:
    SELECT win FROM currM WHERE user = marchetto UNION SELECT win FROM feb2011 WHERE user = marchetto UNION SELECT win FROM jan2011 WHERE user = marchetto
    provata nel phpmyadmin e aggiungendo ' attorno a marchetto funziona perfettamente.
    Comunque il prob si riduce alla suddetta query perchè se riscrivo la var $qWR con una semplice query torna a funiuonare perfettamente:
    codice:
    $qWR = "SELECT * FROM currM";
    $qW = $mysqli->query($qWR);
    .
    Adesso provo anche la cosa del die.

  6. #6
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Non vorrei non funzionasse mysql_error() dato che usi mysqli e la gestione di errori fosse differente...(mai provato).
    Il fatto degli apici ovviamente va risolto altrimenti cerca non un valore ma dovrebbe dare un errore come se quello specificato fosse un campo.
    In alternativa non conoscendo i tuoi dati mi vine da pensare che se non fosse ad esempio "marchetto" ci potrebbe essere un valore con apici, apostrofi e quindi da risolvere.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    42
    codice:
    $qW = $mysqli->query($qWR);
    if ($query==false){
                       if (sql_error_reporting) {
                                                 die ("Sql error of ".$_SERVER["SCRIPT_NAME"].". Call to `$TABLE` in ".__FILE__." on line: ".__LINE__."
    ".mysql_error()."
    SQL:
    $qWR
    ");
                                                 }
    else{
         die();
         }             }
    Mi dà questo risultato:
    codice:
    Sql error of /index.php. Call to `` in /var/www/localhost/htdocs/sfAg/apps/frontend/modules/daemon/actions/actions.class.php on line: 110  SQL: SELECT win FROM currM WHERE user = marchetto UNION SELECT win FROM feb2011 WHERE user = marchetto UNION SELECT win FROM jan2011 WHERE user = marchetto
    Non ci stò capendo niente...

  8. #8
    Scusa, parli di inserire gli apici, ma poi continui a fare la query senza?!
    Modifica la composizione della query così:

    Codice PHP:
    ...
    $qWR $qWR." SELECT win FROM ".$tabS[$i]." WHERE user = '".$user."'";
    ... 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Non hai detto prima che aggiungendo gli apici funziona?? nel post non si vedono ancora.

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    41
    avete già individuato il prblema, basta risolverlo, metti la variabile del user tra apici:

    codice:
     
    $qWR = $qWR." SELECT win FROM ".$tabS[$i]." WHERE user = '".$user."'";

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.