Problema con mysql_fetch_assoc

di il
7 risposte

Problema con mysql_fetch_assoc

Buongiorno a tutti...
Ho questo codice:

$query=mysql_query("SELECT * FROM ProvaDB WHERE chat_id='$chatID'");
$q=mysql_fetch_assoc($query);

$q se non ho sbagliato nulla vede le righe come un array.

if ($q["Titolo"]=="La dolce vita" ) {
echo "Ciao ciao"
}

Nel db ho ovviamente titolo con all'interno La dolce vita, ma ciò nonostante questo if lo salta...dove sbaglio? Grazie

7 Risposte

  • Re: Problema con mysql_fetch_assoc

    Ovunque.
    parti dallo inizio, bidona mysql_query a favore di pdo.
    poi vediamo come prendere i risultati.
  • Re: Problema con mysql_fetch_assoc

    Non sono esperto quindi al momento preferirei mantenere mysql. Ho postato il codice interessato ma io lo uso per sviluppare un bot di telegram...quindi alcuni passaggi non sono chiari.
    Se faccio questo if ($q["NameCMD"] != "empty" ) va tutto bene ma se sostituisco ad empty il nome occupato il quel momento, ad esempio: if ($q["NameCMD"] == "tutorial" ) mi salta questa if.



    $Query = mysqli_query($Connection, "SELECT * FROM `TutorialStepbyStep` WHERE `chatID` = $ChatID");
    $q = mysqli_fetch_assoc($Query);

    if (mysqli_num_rows($Query) == 0)
    {
    mysqli_query($Connection, "INSERT INTO `TutorialStepbyStep` (`ID`, `chatID`, `NameCMD`, `NameProcess`, `UserValue`) VALUES (NULL, '$ChatID', '/tutorial', 'tutorial', 'empty')");
    }

    if ($q["NameCMD"] != "empty" )
    {

    switch ($q["NameCMD"])
    {
    case '/tutorial': // in case we need to get /tutorial input
    switch ($q['NameProcess']) {
    case 'tutorial':
    if (ucfirst(strtolower($UserText)) != "Cancel")
    {
    sendMessage($ChatID, "Send me 'number' or 'language' to do different serach.");
    mysqli_query($Connection, "UPDATE `my_intelligenteva`.`TutorialStepbyStep` SET `NameProcess` = 'confirmed' WHERE `TutorialStepbyStep`.`chatID` = $ChatID");
    }
    }
    break;
    }}
  • Re: Problema con mysql_fetch_assoc

    Mysql_fetc_assoc non vede LE righe come un array ma vede UNA riga per volta come un array associativo.
    Prova qualcosa del tipo
    
    $query=mysql_query("SELECT * FROM ProvaDB WHERE chat_id='$chatID'");
    $trovato = false;
    while ($q=mysql_fetch_assoc($query)) {
        // $q se non ho sbagliato nulla vede le righe come un array. (nope!)
        if ($q["Titolo"]=="La dolce vita" ) {
            echo "Ciao ciao";
            $trovato = true;
            break;
        }
    }
    if (! $trovato) {
        echo "Sorry, la vita non è dolce";
    }
    
  • Re: Problema con mysql_fetch_assoc

    massicode ha scritto:


    Mysql_fetc_assoc non vede LE righe come un array ma vede UNA riga per volta come un array associativo.
    Prova qualcosa del tipo
    
    $query=mysql_query("SELECT * FROM ProvaDB WHERE chat_id='$chatID'");
    $trovato = false;
    while ($q=mysql_fetch_assoc($query)) {
        // $q se non ho sbagliato nulla vede le righe come un array. (nope!)
        if ($q["Titolo"]=="La dolce vita" ) {
            echo "Ciao ciao";
            $trovato = true;
            break;
        }
    }
    if (! $trovato) {
        echo "Sorry, la vita non è dolce";
    }
    
    Così come hai suggerito tu funziona, mi potresti spiegare a cosa serve la variabile $trovato ? Grazie mille
  • Re: Problema con mysql_fetch_assoc

    E' solo un modo comodo per rilevare che hai trovato uno dei possibili record che stai cercando
  • Re: Problema con mysql_fetch_assoc

    Diciamo che se è quello che vuoi fare, ovviamente, non faresti certo così, bensì imporrai un AND (una selezione) sulle righe, contando i risultati, oppure (meglio ancora) con un count() esplicito.

    Per il resto va benissimo SE non hai intenzione di rendere accessibile da internet qualcosa del genere, altrimenti ti troverai l'archivio cancellato in meno tempo di quello necessario per leggere questo post.

    Altro consiglio: NON chiamare i nomi dei campi ConLeMaiuscoleMinuscole (e soprattutto delle tabelle), perchè non in tutti i sistemi mysql sono supportati.
    Ad esempio su Windows non c'è differenza (poichè nel caso di utilizzo di myisam, o innodb a singola tabella) avrai i dati memorizzati in file (e come sai su Windows maiuscole-minuscole non contano).

    Su sistemi *nix invece sì.
    ---
    Consiglio: metti tutto minuscolo e buonanotte. Al massimo, proprio al massimo, lascia in maiuscolo i token mysql.
    Come saprai perfino le ricerche sono case INSENSITIVE, cioè where qualcosa="questo" è uguale a where qualcosa="QuesTO" (a meno di non usare modificatori, ma tipicamente non si usano)
  • Re: Problema con mysql_fetch_assoc

    Grazie dei vostri consigli preziosissimi...
Devi accedere o registrarti per scrivere nel forum
7 risposte