Tach!
$values = array('2b442c0dc74c1dff7fdaab8a364361d2', '151237075579946c033aadc899804380', '0b5247f8493271ec41297c4385386837', '57f300b4fa8518ab557acf154af5e621');
$s = substr( str_repeat( ' , ?' , count( $values ) ) , 2 );
str_repeat() ist ok, aber dann nimm lieber implode(). Dann musst du nicht überflüssige Zeichen abschneiden.
$s = implode(',', str_repeat('?', count($values)));
Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in
Damit hat die Meldung ja auch recht. Du hast die Werte von $values zweimal verwendet, musst sie also auch zweimal binden, vor und nach den beiden anderen Einzelkandidaten.
Warning: Invalid argument supplied for foreach()^
Das kommt wohl aus einer anderen Ecke deines Programms.
Diese beiden müssten irgendwie verknüft werden? Denn ich kann ja bind_param nicht zweimal aufrufen?
Das auch noch. Du musst also erstmal ein komplettes Array mit beiden $values-Inhalt, den beiden Einzelwerten und nochmals $values bilden und das dann in einem Rutsch binden.
Ich rate dir nochmal, auf PDO umzusteigen, denn dann entfällt dieses Gehampel mit den Referenzen und dem Binden. Einmal Prepare und beim Execute ein Array mit den Werten übergeben. Fertig.
dedlfix.