Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: mysql_fetch_array

  1. #1

    mysql_fetch_array

    Premesso che sto studiando il php da una settimana sto avendo un problema di cui non riesco a capirne la natura.. In pratica ricevo 2 warning del tipo:

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource ..
    Warning: mysql_close()

    questo è il codice:

    <?php
    function query_db($search)
    {
    include_once('db_login.php');
    $connection = mysql_connect($db_host,$db_username,$db_password);
    if(!$connection)
    die ("Impossibile connettersi al db " . mysql_error());
    // seleziono il db

    $db_select = mysql_select_db($db_database);
    if(!$db_select)
    die ("Impossibile connettersi al db " . mysql_error());

    //query

    if(get_magic_quotes_gpc())
    $search = stripslashes($search);

    $search = mysql_real_escape_string($search);

    $query = "SELECT * from Film where titolo LIKE '%$search%'"; // where Titolo LIKE '%$search%'";

    $result = mysql_query($query);

    if(!$result)
    die ("Errore " . mysql_error());
    }

    echo ("<table>");
    echo "<tr><th>Titolo</th><th>Regista</th></tr>";

    while($row = mysql_fetch_array($result, MYSQL_ASSOC))
    {
    $regista = $row["Regista"];
    $film = $row["Titolo"];
    echo "<tr>";
    echo "<td>$regista</td>";
    echo "<td>$film</td>";
    echo "</tr>";
    }
    echo "</table>";
    mysql_close($connection);
    ?>

    e poi richiamo la funzione in un'altra pagina:

    <?php
    if(isset($_GET['search']))
    {
    $searchform = htmlentities($_GET['search']);
    include_once('query.php');
    query_db($searchform);
    }
    ?>

    grazie

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Sei sicuro che la SELECT trovi qualcosa?
    Se non trova niente non puoi passare il result set a mysql_fetch_array().
    Controlla appena fatta la query se $result ha dei contenuti con la funzione mysql_num_rows(), se ci sono dei risultati passi $result a mysql_fetch_array() altrimenti no.

  3. #3
    Grazie.
    Avevo già provato lanciando la query da phpmyadmin e ricevevo come risultato una riga.
    Cmq ho fatto come hai detto inserendo nel codice la seguente riga:

    $num_rows = mysql_num_rows($result);

    e mi ritorna 1.

    che può essere?



    ciao

  4. #4
    function query_db($search)

    e' una funzione senza RETURN percio' quello che succede li dentro non e dato a conoscerlo fuori.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    scusa ma non ho capito

  6. #6
    Originariamente inviato da seventhseal
    scusa ma non ho capito
    $connection e $result non sono visibili fuori dalla funzione.

    http://www.php.net/manual/en/functio...ing-values.php

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Originariamente inviato da Alhazred
    Sei sicuro che la SELECT trovi qualcosa?
    Anche se la query non fornisce risultati non significa che mysql_fetch_array ha un argomento invalido.

    Il problema è diverso... tu crei la funzione query_db() che non viene mai richiamata!!

    Inoltre una variabile presene all'interno di una funzione non esiste al di fuori di essa. Esempio:
    Codice PHP:
    <?php
    function ciao()
        {
        
    $var 'ciao';
        }

    ciao();
    echo 
    $var// questa variabile non esiste!!!
    ?>
    Nel tuo caso la variabile $result è valorizzata all'interno della funzione query_db() e poi la richiami nella funzione mysql_fetch_array() che sta fuori la funzione query_db()!!!

    Il tuo per essere uno script di uno che inizia da una settimana a studiare lo trovo troppo complicato.

    Cmq... dandogli uno sguardo superficiale credo che basti spostare la chiusura di una graffa ma deve essere testato...

    Codice PHP:
    <?php
    function query_db($search)
        {
        include_once(
    'db_login.php');
        
    $connection mysql_connect($db_host,$db_username,$db_password);
        if(!
    $connection) die ("Impossibile connettersi al db " mysql_error());
        
    // seleziono il db
        
    $db_select mysql_select_db($db_database);
        if(!
    $db_select) die ("Impossibile connettersi al db " mysql_error());
        
    //query
        
    if(get_magic_quotes_gpc())
        
    $search stripslashes($search);

        
    $search mysql_real_escape_string($search);
        
    $query "SELECT * from Film where titolo LIKE '%$search%'"// where Titolo LIKE '%$search%'";

        
    $result mysql_query($query);

        if(!
    $result)
        die (
    "Errore " mysql_error());
    // qui c'era la graffa che ho tolto

    echo ("<table>");
    echo 
    "<tr><th>Titolo</th><th>Regista</th></tr>";

    while(
    $row mysql_fetch_array($resultMYSQL_ASSOC))
    {
    $regista $row["Regista"];
    $film $row["Titolo"];
    echo 
    "<tr>";
    echo 
    "<td>$regista</td>";
    echo 
    "<td>$film</td>";
    echo 
    "</tr>";
    }
    echo 
    "</table>";
    mysql_close($connection);
    }
    ?>

  8. #8
    Miiiiiii grazie.

    Quella parentesi graffa mi ha fatto perdere un paio d'ore..... Non me ne ero accorto..



    ciao

  9. #9
    Originariamente inviato da seventhseal
    Miiiiiii grazie.

    Quella parentesi graffa mi ha fatto perdere un paio d'ore..... Non me ne ero accorto..



    ciao
    così non impari il php... cerca perlomeno di capire il perchè ora funziona!

  10. #10
    Originariamente inviato da oly1982
    così non impari il php... cerca perlomeno di capire il perchè ora funziona!
    ma a questo punto togli la funzione ed esegui la pagina cosi' com'e'.

    Che senso avrebbe una funzione del genere che per di piu' si chiama "query_db" .... ????

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.