Das Problem ist, dass Sie einen Verweis auf $tempArray in $arr einfügen. Dann ändern Sie die Referenz. Bei der dritten Schleife haben Sie 3 Verweise auf dasselbe Array. Deshalb werden die Werte so angezeigt ... Sie können dies auf eine eher nicht intuitive Weise lösen.
versuche:
$stmt->bind_result($tempArray["val1"], $tempArray["val2"],$tempArray["val3"]);
while ( $stmt->fetch () ) {
$x = $tempArray; //This copies the values of $tempArray to $x and each loop will create a new x.
array_push($arr, $x);
}