Salve a tutti...
Faccio presente che prima di postare qui ho fatto una ricerca in generale su internet ma non sono riusicto a trovare gran chè, salvo questo link. Il problema è che non riesco bene i passi che l'utente ha seguito per risolvere il problema (il link è http://www.daniweb.com/forums/thread96230.html).
Il problema è il seguente: sto cercando di costruire da me una specie di framework e sono arrivato alla parte di collegamento al db. Vorrei che l'utilizzo delle funzioni di interrogazione e settaggio dei parametri rimanesse nascosto in fase di programmazione e che il tutto fosse eseguito dal framework.
Avevo risolto NONutilizzando mysqli, ma poi mi sono reso conto che la funzione di bind_param è decisamente più sicura e soprattutto più veloce in fase di esecuzione poichè è meglio sfruttata la cache del db.
Ora al di là di tutto, vorrei che in fase di programmazione si mettessero dentro un array dei parametri che poi vengano passati come argomento, insieme alla query, alla funzione del framework che deve eseguire la query.
Ora in java sarebbe tuttp facile (sono 6 anni che lavoro nel campo), in php5 un po' meno visto che sto imparando tutto amatorialmente.
Il problema del bind_param è che non si può definire l'indice in cui si sta settando il parametro (dove c'è il punto interrogativo), ma vuole in ordine tanti parametri quanti sono i punti interrogativi e mi sembra di aver capito che non vuole nemmeno il valore contenuto nei parametri, ma vuole variabili.
Mi spiego meglio...se devo passare due parametri "param1" e "param2" non potrei semplicemente fare $stmt->bind_param('ss,'param2','param2'); perchè va in errore.
Ora vi posto come avevo pensato di risolvere, ma che non capisco perchè non funziona.
<?php
$sqlQuery = "SELECT campo1, campo2 FROM tabella Where a=? AND b=?";
$params[0] = 'pluto';
$params[0] = 'paperino';
executeQuery($sqlQuery, $params);
function executeQuery($sqlQuery, $params)
{
try {
$count = 1;
$countColonna = 0;
$bindResultparams = '';
$stmt = $this->mysqli->stmt_init();
$stmt->prepare($sqlQuery);
$numParams = '';
$typeParams = '';
for ($i = 0; $i<count($params); $i++) {
$typeParams .= 's';
$numParams .= "'".$params[$i]."'";
if ($i != count($params)-1)
$numParams .= ',';
}
$func = "bind_param('$typeParams',$numParams)";
$stmt->$func;
$stmt->execute();
$stmt->store_result();
printf("Number of rows: %d.\n", $stmt->num_rows);
?>
La printf mi restituisce 0 invece dovrebbe darmi un numero positivo!
Come posso risolvere secondo voi?