PDOのプリペアドステートメントについて質問です。

$stmt = $obj_dbh->prepare("INSERT INTO test (name, price) VALUES (?, ?)");
$folder=array();
for($i=0 ;$i<2 ;$i++){
    $stmt->bindParam( $i+1, $folder[$i] );
}
$data=array('ぶばぶば', 2000);
foreach($data as $key=>$value){
    $folder[$key]=$value;
}
$stmt->execute();

上のはうまく動くのですが

$stmt = $obj_dbh->prepare("INSERT INTO test (name, price) VALUES (?, ?)");
$folder=array();
for($i=0 ;$i<2 ;$i++){
    $stmt->bindParam( $i+1, $folder[$i] );
}
$data=array('ぶばぶば', 2000);
$folder=$data;

$stmt->execute();

こうすると空のデータが放り込まれるのですがなぜでしょうか?

上ので動くのでやりたいことは出来るのですが、
どうしてなのか気になったもので。
両方とも print_r($folder) すると、変数のなようはまったく一緒です。

bindというのをイマイチ良く理解していなのですがその辺が原因で何か勘違いしてますでしょうか?