商品テーブルから名前の情報を取ってくる際のSQL
SELECT name FROM product LIMIT :span OFFSET :p_num
いつものように
$data = array(':span' => $span,'p_num' => $p_num);
と書いてexecuteすると
ERROR!SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
というエラーが出てきて怒られる。
要は':span' => $span
のようにすると、入れられる値は文字の数字になってしまうので、
数値を入れるべきSQL文でエラーが起きた。
解消法
$stmt->bindValue(':span', $span, PDO::PARAM_INT);
$stmt->bindValue('p_num', $p_id, PDO::PARAM_INT);
とすることで、数値として値をSQLに入れられる。
似たものでbindParam
というものがあるが、違いは後で調べて追記しておく。