Visualizzazione risultati 1 fino 3 di 3

Discussione: [ MySqli ] Usare i dati di una $stmt

  1. #1
    Guest

    Predefinito [ MySqli ] Usare i dati di una $stmt

    Ok... giuro che questa volta ho letto il manuale.
    Praticamente... ah ciao ragazzi

    Dicevo, praticamente ho una funzione, un metodo insomma, che prepara una query, controllo se ci sono corrispondenze e infine dovrebbe stampare dei risultati. Ora mi spiego meglio.

    TABELLA DATABASE ( example )

    Nome tabella: utenti_bloccati

    Campo 1 : id_utente
    Campo 2: nome_utente
    Campo 3: data_blocco
    Campo 4: motivo_blocco
    Campo 5: autore_blocco
    Campo ? ecc... così via.
    CODICE PHP ( example )

    Codice PHP:
    public function check_blocked($emai, $id) {

    $stmt = $this->db->stmt_init();
    $stmt->prepare("SELECT * FROM utenti_bloccati WHERE nome_utente = ? AND id_utente = ?");
    $stmt->bind_param("si", $email, $id);
    $stmt->execute();
    $stmt->store_result();
    // Controllo quante righe mi ha restituito la query
    if($stmt->num_rows) { // QUI FUNZIONA TUTTO; FA IL CONTEGGIO G IUSTO
    // L'utente è bloccato. Stampo le informazioni relative al blocco.
    echo "Gentile utente, siamo spiacenti ma il suo account e stato momentaneamente bloccato.";
    echo
    "<br><strong>Autore Blocco:</strong> " . $stmt->autore_blocco; echo "<br><strong>Motivazione:</strong> " . $stmt->motivo_blocco;
    } else {
    echo
    "Libero!!!"; // <-- mi serviva per controllare il blocco >_>
    }
    $stmt->close();
    Ho evitato di scrivere la classe madre ( USER ) e la classe del DB, funzionano correttamente.
    Quello che sbaglio è sicuramente la forma con la quale voglio richiamare i campi. Ma quello che vorrei fare io è proprio questo, vorrei utilizzare i risultati raccolti dalla stmt e stamparli tramite echo.

    Ho trovato questo metodo sul manuale, ma dovrei specificare i campi e scrivere le variabili, e non è così che voglio fare:

    Codice PHP:
    if($stmt->num_rows) { // e bla bla...
    $stmt->bind_result($autore_blocco);
    $stmt->fetch();
    echo
    "Gentile utente, siamo spiacenti ma il suo account e stato momentaneamente bloccato.";
    echo
    "<br><strong>Autore Blocco:</strong> " . $autore_blocco;
    Per dettagli, a disposizione. Grazie in anticipo!

    [ EDIT ]

    A quanto pare, tutti sconsigliano l'uso del * ( ALL ) nella query. Se io non volessi usare tale comando, dovrei scrivere tutti i campi che mi interessano nella query, anche se mi servono tutti, poi faccio un bind_result() e un fetch() sulla $stmt e in effetti funge... Anche se non è proprio il massimo, brutta pecca per le stmt.
    Ultima modifica di ernestocampese : 25-09-2013 alle ore 11.37.18

  2. #2
    Guest

    Predefinito

    E' una caratteristica delle stmt: permette di avere una gestione capillare di quello che succede. Ma nel tuo caso non puoi estrarre solo l'autore e la motivazione?

  3. #3
    Guest

    Predefinito

    Scusa la risposta in ritardo, sono stato fuori casa!
    Beh si potrei, in effetti sono gli unici campi che contano, ma sostanzialmente era più un pretesto per capire come fare quel'estrazione anche in altri casi.

    Alla fine ho risolto evitando l'ALL e includendo nella dichiarazione della query i campi che mi servono.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •