Non ho mai usato bind_param(), ma ti posso evidenziare le imprecisioni che saltano all'occhio:
Codice PHP:
<?php
$sqlQuery = "SELECT campo1, campo2 FROM tabella Where a=? AND b=?";
/* $params[0] = 'pluto';
* $params[0] = 'paperino';
* Non va bene: non generi un vettore di due elementi ma
* assegni due volte al primo elemento */
$params[] = 'pluto';
$params[] = 'paperino';
executeQuery($sqlQuery, $params);
function executeQuery($sqlQuery, $params)
{
/* try {
* Senza il corrispettivo catch non va */
/* $count = 1;
* $countColonna = 0;
* $bindResultparams = '';
* Non più usati */
$stmt = $this->mysqli->stmt_init();
$stmt->prepare($sqlQuery);
/* Questo non va bene: passi a bind_param() una stringa con
* valori separati da virgola, non argomenti diversi (come invece richiede)
* $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; */
$types = '';
foreach ($params as $param) {
if (is_string($param)) {
$types .= 's';
} elseif (is_int($param)) {
$types .= 'i';
} elseif (is_double($param)) {
$types .= 'd';
} else {
return false;
}
}
array_unshift($params, $types);
call_user_func_array(array(&$stmt, 'bind_param'), $params);
$stmt->execute();
$stmt->store_result();
printf("Number of rows: %d.\n", $stmt->num_rows);
/* Manca la chiusura della funzione */
}
?>
Comunque, fossi in te, darei un'occhiata alle funzioni PDO (le trovi direttamente nel manuale PHP): sono molto simili a mysqli ma astraggono anche dal database server. Se devi cominciare da zero, tanto vale farlo alla grande.