Funzione con N paramentri

Ad esempio ho una funzione tipo:codice PHP:

function aggiorna($nome,$cognome,$email,$password)
  {
    $sql ='UPDATE utenti SET 
    nome =''.$nome.'',
    cognome =''.$cognome.'',
    email =''.$email.'',
    password=''.$password.''';
}

In questo caso li passo $nome,$cognome,$email,$password, ma se a priori non sapessi quanti parametri passarli come possibile fare.

Vorrei creare una funzione generica riutilozzabile per n parametri passati.

inviato 5 anni fa
lucavalentino
X 0 X

passa un array

io farei all'incirca cos:

function aggiorna($data){
  $sql ='UPDATE utenti SET ';
  foreach ($data as $key => $value)
    $sql .= "$key = $value, ";
}

$data = array('nome'=>$nome,'cognome'=>$cognome,....);
aggiorna($data);
risposto 5 anni fa
civre
X 0 X

Ho provato cos

function aggiorna($tabella, $data)
  {
    $sql ='UPDATE\''.$tabella.'\' SET';
    foreach ($data as $key => $value)
    $sql .= "$key = $value, ";
    $result = $this->db_query($sql);
  return $result; 
  }

ma da errore

risposto 5 anni fa
lucavalentino
modificato 5 anni fa
Gianni Tomasicchio
X 0 X

Funzioni di questo tipo sembrano utili ma se realizzate superficialmente possono rivelarsi molto pericolose.

Infatti realizzando una funzione che accetta un numero indecifrato di parametri di tipo sconosciuto (stringhe, interi, ecc.) non possibile scrivere correttamente la query. Ad esempio non possibile sapere a priori se effettuare l'escape delle strinche, se racchiudere le stringhe tra apici, ecc.

Se si desidera utilizzare funzioni di questo tipo per la costruzione degli statement SQL meglio affidarsi a librerie collaudate.

:bye:

risposto 5 anni fa
Gianni Tomasicchio
X 0 X

Funzioni di questo tipo sembrano utili ma se realizzate superficialmente possono rivelarsi molto pericolose.

Infatti realizzando una funzione che accetta un numero indecifrato di parametri di tipo sconosciuto (stringhe, interi, ecc.) non possibile scrivere correttamente la query. Ad esempio non possibile sapere a priori se effettuare l'escape delle strinche, se racchiudere le stringhe tra apici, ecc.

Se si desidera utilizzare funzioni di questo tipo per la costruzione degli statement SQL meglio affidarsi a librerie collaudate.

:bye:

santo post... :P che poi pu accadere che all'interno delle variabili imprecisate si trovino valori imprecisati, utili ad una banalissima sql injection :O

usate i framework, le api di un cms, scaricate qualcosa da PEAR, o magari leggetevi le librerie mysqli, e sicuramente fare meglio.

infine, per passare ad una funzione n parametri, si potrebbe utilizzare la func_get_args e relative funzioni connesse...

Link: http://php.net/manual/en/function.func-get-args.php

risposto 5 anni fa
larchitetto
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda