Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    33

    [MySQL] Prendere un solo record senza una for each

    Ciao..
    scusate il titolo e probabilmente anche la banalità della domanda...
    ma sono novizio :-)

    allora ho una classe (non mia)...
    che in pratica mi riempie l'array con i valori presi dal db...

    ....
    function Query($qy){

    if(!$this->conn){$this->Connect();}
    $res= mysql_query($qy,$this->conn);
    $this->rows =mysql_num_rows($res);
    if($this->rows > 0){
    while($args = mysql_fetch_assoc($res)){
    array_push($this->result, $args);}
    ....

    ora, considerando che non ci sono doppioni nel db (viene controllata la cosa in fase di registrazione), se effettuo la query successiva come posso recuperare l'unica tupla trovata (in questo caso solo IDuser) direttamente senza usare la foreach?? così funziona ma magari c'è un modo più pulito....
    insomma se $db->result è l'array come distinguo direttamente chiavi e valori?? :-)

    $db->query("SELECT * FROM users WHERE username = '$username' AND password='$password'");
    foreach($db->result as $key=>$value){
    $idwm_log=$value['IDuser'];
    }

    non so se mi sono spiegato bene....
    Ciao e grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127
    SELECT TOP 1 * FROM users WHERE bla bla
    cosi nn va?

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    33
    Grazie per la risposta....
    ma non era quello che intendevo...
    la select funziona ed obbligatoriamente mi restituisce un solo record...

    è la foreach che è inutile (visto che c'è un solo record che lo scorro a fare l'array??)...

    quello che chiedevo è la forma per accedere direttamente all'array dei risultati....cioé all'unica tupla presente....

    es. $db->result['iduser']

    cioé proprio il modo di scrivere la cosa se è possibile :-))))

    Grazie comunque...

  4. #4
    Originariamente inviato da andywm

    la select funziona ed obbligatoriamente mi restituisce un solo record...
    se sei sicuro che estrai una sola tupla (ad esempio perchè fai la select in base ad una primary key unique) puoi usare

    mysql_fetch_row

    (il manuale dice: "ottiene una riga del risultato come un array enumerato ")

    ..povero silvio, lui è sceso in campo..
    e lo ha fatto per noi...comunisti...

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    33
    si...di quello sono sicuro...visto che non permetto a due utenti di registrarsi con gli stessi user e pwd....

    però volevo come accedere all'array di risultati in base alla classe che utilizzo....
    cioé.. usando la foreach vedi come scorro chiave e valore...
    ma visto che non ho la necessità di scorrere l'aray....
    chiedevo proprio come trovare il valore di quel campo...

    cioè se esiste una forma simile... $db->result['iduser']
    o $db->result[0]...

    cioé come accedere direttamente al valore iduser :-)
    altrimenti lascio così che funziona.... eh eh

    Grazie comunque per la gentilezza
    Ciao
    Andy

  6. #6
    Si!quello che chiedi lo ottieni proprio come suggerito da ... con mysql_fetch_row, mysql_fetch_array oppure mysql_fetch_assoc, che sono tutti sinonimi, il primo ti carica il risultato in un array associativo e numerico (ma puoi specificarne solo uno dei due), il secondo solo come array numerico e il terzo come array associativo.

    Vedi il manuale

    codice:
    $sql = "SELECT nome FROM TABELLA WHERE condizione";
    $res = mysql_query($sql)or die(mysql_error());
    $row = mysql_fetch_assoc($res);
    
    echo 'Nome: '.$row['nome'];
    bye
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    33
    Ciao...
    quello che dici è chiaro....
    ma come faccio risfruttando la classe che ho...
    è questo che chiedo :-)))

    --------------------------
    function Query($qy){

    if(!$this->conn){$this->Connect();}
    $res= mysql_query($qy,$this->conn);
    $this->rows =mysql_num_rows($res);
    if($this->rows > 0){
    while($args = mysql_fetch_assoc($res)){
    array_push($this->result, $args);}
    ....
    --------------------------
    allora fino alla $args = mysql_fetch_assoc($res)

    siamo a quello che hai scritto tu...
    dopo però queste righe (in questo caso una) vanno nell'array
    $this->result

    che chiamando la classe con $db...
    sarebbe $db->result.... ($result è una variabile della classe... $args no)

    io da questo vorrei poter prendere direttamente la riga utile...senza la necessità di fare la foreach....
    ma $db->result['iduser'] non funziona :-)))

    scusa se non riesco a spiegarmi bene...
    comunque grazie per la disponibilità....



    Andy

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.