Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Sei
    Registrato dal
    Oct 2016
    Messaggi
    37

    Statement complesso PHP+MySQL

    Ciao a tutti,

    ho, recentemente, letto questa approfondimento su come ottimizzare l'utilizzo di MySQL con PHP, di seguito il link:

    https://www.html.it/articoli/ottimiz...mysql-con-php/

    Ora, mi sorge spontanea una domanda. Sto' realizzando un applicazione che recupera un valore ($counter) ed il relativo id univoco dal database con una semplice select (SELECT id,counter FROM tabella1), lo moltiplica per un valore che estrapolo da una variabile con scope globale ($moltiplicatore = 10) e aggiorna la medesima tabella (UPDATE tabella1 SET balance=" . $nuovo_valore ." WHERE id=". $id_precedentemente_estrapolato.").

    La mia domanda è, come posso fare il tutto con un unico statement?

    Esempio:
    Codice PHP:
    UPDATE tabella1 AS t1 SET t1.balance = (SELECT counter FROM tabella1) * " . $moltiplicatore


    Spero di essermi spiegato bene! Un saluto

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Dato che la domanda riguarda come scrivere una query, sposto nella sezione database.
    Il fatto che usi una variabile php o un numero esplicito non influisce sulla struttura della query da scrivere, dunque la domanda non riguarda PHP.

  3. #3
    Utente di HTML.it L'avatar di Sei
    Registrato dal
    Oct 2016
    Messaggi
    37
    Temevo di essere fuori sezione, grazie mille Alhazred! Attendo risposte

  4. #4
    UPDATE tableX SET columnA=columnB*10 WHERE ...search statement...

  5. #5
    Utente di HTML.it L'avatar di Sei
    Registrato dal
    Oct 2016
    Messaggi
    37
    Grazie per la riposta optime! E se la mia richiesta fosse più articolata?
    Ad esempio,
    Codice PHP:
    (PSEUDO CODICE)
    UPDATE tabella1 AS t1 SET t1.balance " . $array[(SELECT counter FROM tabella1)] * $moltiplicatore 


    Un sorta di funzione asincrona che, recuperato un valore dalla tabella, lo usi come chiave di un array e componga la nuova query.

  6. #6
    per le cose complicate fa' un esempio semplice per le menti minime come la mia

  7. #7
    Utente di HTML.it L'avatar di Sei
    Registrato dal
    Oct 2016
    Messaggi
    37
    Certo! Allora, ho un array con indice numerale e valori al suo interno:
    Codice PHP:
    $array_esempio = array(
    1    => 10,
    2  => 100,
    3  => 1000,
    => 10000); 

    In una tabella chiamata users del database ho i seguenti campi: id, name, balance, counter

    Normalmente avrei fatto una SELECT id, counter from users. Dopodiché avrei iterato un ciclo foreach per scorrere il risultato e ad ogni iterazione del ciclo fatto questo:
    Codice PHP:
    UPDATE users SET balance balance " . $array_esempio [$counter]  ." WHERE id ". $id

    In pratica uso il valore counter della prima query come indice per determinare nell'array quale valore moltiplicare per balance.

    Ecco, per rendere più efficiente il codice vorrei iterare un'unica query con UPDATE e SELECT, sfruttando subito il valore ricavato dalla SELECT per l'array in php.

  8. #8
    non puoi far interagire *direttamente* un array php con una tabella mysql. metti l'array in una tabella del db e fa' tutto da mysql

  9. #9
    Utente di HTML.it L'avatar di Sei
    Registrato dal
    Oct 2016
    Messaggi
    37
    Ho capito, temevo fosse l'unica soluzione. Grazie mille per la risposta optime!

  10. #10

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.