Tach!
Mit
$stmt->bind_param("sss", $userMail, $pw, $ak);
lege ich fest, ob die eingefügten Werte ein String oder integer ist. Wenn ich$ak = 1;
schreibe, bin ich davon ausgegangen dass der Wert ein "integer" also$stmt->bind_param("ssi", $userMail, $pw, $ak);
istdu verwechselst hier zwei Welten. Mit bind_param() teilst du der Datenbank mit, welche(n) Datentyp(en) du als Ergebnis haben möchtest. Die DB versucht dann nach besten Kräften, diesem Wunsch nachzukommen.
bind_param() ist nicht bind_result(). Der Rest von Des (anderen) Martins Erklärungsversuch ist damit nicht mehr zutreffend.
das Script hat die Abfrage nicht ausgeführt
Was genau hat es denn gemacht? Gab es Fehlermeldungen oder einen Rückgabewert, der einen Fehler anzeigte?
ändere ich diesen Wert in ein „s“ funktioniert die Abfrage warum?
Dazu kann ich nichts sagen, mangels Erfahrung. Wie sieht denn die Tabellenstruktur aus? Weiterhin gibt es sowohl in PHP als auch in MySQL eine automatische Typkonvertierung, die hier mit reinspielen kann. Wenn s funktioniert, dann lass es so. Probier auch noch einige (Extrem-)Fälle durch, ob die auch problemlos so durchgewunken werden.
dedlfix.