J'essaie de passer un tableau en tant que paramètres d'une fonction, et j'ai quelques problèmes. Voici la fonction.
$stmt->bind_param();
Je faisais des recherches et constaté que vous pouvez utiliser ceci:
$stmt->bind_param(...$values);
Cela a bien fonctionné sur mon serveur de développement (PHP 7.0.0), mais quand j'entré dans un autre serveur (PHP 5. *), je suis l'erreur suivante:
erreur de syntaxe, inattendue, expecting ')'
Sur d'autres recherches, je TRIE. ' d:
call_user_func_array(array($stmt, 'bind_param'), $values);
et a obtenu cette erreur:
call_user_func_array() attend le paramètre 1 pour être un rappel valide, premier membre du groupe n'est pas un nom de classe valide ou un objet
* En note latérale, je sais que je pourrais juste entrer les paramètres et tout ira bien, mais j'ai besoin de la fonction pour prendre un certain nombre de paramètres (qui est ce qui a conduit à l'idée de la fonction).
est ici la fonction:
function updateId($id, $data){
$mysqli = dbConnect::connect();
$sm=array();
$values=array();
$dataString = array();
foreach($data as $column=>$value){
$dataString[] = ($column .'= ?');
$values[] = $value;
if(gettype($value)==="string"){
$sm[] = 's';
}elseif(gettype($value)==="integer"){
$sm[] = 'i';
}elseif(gettype($value)==="double"){
$sm[] = 'd';
}else{
$sm[] = 'b';
}
}
$dataString = implode(', ',$dataString);
$sm = implode('',$sm);
$prepString = "UPDATE $this->tablename SET $dataString WHERE id=$id";
array_unshift($values, $sm);
$stmt = $mysqli->prepare($prepString);
$stmt->bind_param(...$values);
$stmt->execute() or die($stmt->error);
$stmt->close();
$mysqli->close();
}
Peut-être que si vous nous avez montré du code, vous obtiendrez une meilleure réponse. – RiggsFolly
Semble auto-explicatif _le membre du premier tableau n'est pas un nom de classe ou un objet valide – AbraCadaver
Je peux fournir cela si cela est utile, mais cela fonctionne dans mon serveur de développement. Toutes les erreurs pointent vers cette ligne. – Blaise