問題は、$tempArrayへの参照を$arrに挿入していることです。次に、参照を変更します。 3番目のループまでに、同じ配列への3つの参照があります。そのため、値はそのように表示されます...これは直感的ではない方法で解決できます。
試してみてください:
$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);
}