Supponendo che si sta in realtà voler scrivere la propria versione (in contrapposizione ad utilizzare una delle librerie esistenti altre risposte hanno suggerito - e anche queste sono buone opzioni) ...
Ecco un paio di funzioni che potresti trovare utile esaminare. Il primo consente di associare i risultati di una query a un array associativo e il secondo consente di passare in due array, uno un array ordinato di chiavi e l'altro un array associativo di dati per tali chiavi e avere i dati vincolati in una dichiarazione preparata:
function stmt_bind_assoc (&$stmt, &$out) {
$data = mysqli_stmt_result_metadata($stmt);
$fields = array();
$out = array();
$fields[0] = $stmt;
$count = 1;
while($field = mysqli_fetch_field($data)) {
$fields[$count] = &$out[$field->name];
$count++;
}
call_user_func_array(mysqli_stmt_bind_result, $fields);
}
function stmt_bind_params($stmt, $fields, $data) {
// Dynamically build up the arguments for bind_param
$paramstr = '';
$params = array();
foreach($fields as $key)
{
if(is_float($data[$key]))
$paramstr .= 'd';
elseif(is_int($data[$key]))
$paramstr .= 'i';
else
$paramstr .= 's';
$params[] = $data[$key];
}
array_unshift($params, $stmt, $paramstr);
// and then call bind_param with the proper arguments
call_user_func_array('mysqli_stmt_bind_param', $params);
}
speravo di fare il mio, ma non sono sicuro. '$ Db-> fetchAll ($ sql, 2);' si comporta come mysql_fetch_array? Inoltre, perché sembra che ci sia così tanto codice ridondante che deve esistere in ogni script? Posso fare un'altra lezione per gestire tutto fino alla fine di quel tentativo, prendere una dichiarazione o è considerata una cattiva pratica? –
@Jon - fetchAll restituirà un array associativo per impostazione predefinita (può essere modificato, c'è anche fetchRow, fetchCol, fetchOne e così via). Il lungo try..catch apparirà idealmente solo una volta nella tua applicazione all'interno del bootstrap (o include o simili), quindi non è davvero un problema. – karim79
Ok questo sembra il modo in cui andrò. Grazie per tutto il vostro aiuto! –