22147


<http://blog.a-way-out.net/blog/2013/12/18/pdo-prepare-statement-numeric-
literal-part2/>

* * *

**質問1**  
・上記リンク先で下記のように記述していますが、例えば10カラム分のデータを渡す場合、10回$prepare->bindValue()指定しなければいけないのでしょうか？  
・配列か何かでまとめて渡してもう少し簡潔に書く方法はないでしょうか？

[code]

     $prepare->bindValue(':id', $int, PDO::PARAM_INT);
     $prepare->bindValue(':lang', $str, PDO::PARAM_STR);
    
[/code]

* * *

**質問2**  
・下記の方に(int)でキャストしている記述がありますが、これは万が一文字列型で渡されたとしても、intへ強制変換する、という意味でしょうか？  
・例えば、intしか渡さないように実装しておけば、この(int)キャスト記述は不要？

[code]

    $prepare->bindValue(':id', (int) $int, PDO::PARAM_INT);
    
[/code]


CC BY-SA 3.0
2016-02-15T09:49:15.110
22103
2016-02-16T03:36:46.900
7886
question
php mysql
MySQL5.6とPDOで数値列を含むデータを配列などでまとめて渡すには？


質問１  
$prepare->bindValue() のタイピング量を減らしたいのであればこんな感じにします。  
コーディング量は増えますよ。

[code]

    $bindArray = array(
                    array('param' => ':id',   'value' => $int, 'type' => PDO::PARAM_INT), 
                    array('param' => ':lang', 'value' => $str, 'type' => PDO::PARAM_STR),
                 );
    
    foreach ($bindArray as $bindParam){
        $prepare->bindValue($bindParam['param'], $bindParam['value'], $bindParam['type']);
    } 
    
[/code]

質問２  
そうです。


CC BY-SA 3.0
2016-02-16T03:36:46.900
22147
2016-02-16T03:36:46.900
7343
22103
answer