かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

PDO

MySQL カラム名にハマる

バグ踏みの達人です。 PHP から MySQL のデータを更新しようとして珍しいバグを踏んだのでメモ 何故かエラーになる あるテーブルに次のようなコードでデータを入れようとしたらエラーになりました。

PHP PDO 複数条件(WHERE IN)にハマる

PHPのPDOで複数のidのデータをまとめて取ってくるとかで WHERE IN を使おうとしてハマったのでメモ。 配列のまま渡しても取得できない。 prepare($sql); $stmt->bindValue(':ids', $ids, PDO::PARAM_INT); $stmt->execute(); $res = $stmt->fetchAll(); var_…

PHP PDO UPDATE時にそのまま値をインクリメント/デクリメントしたい。

前もって現在の値を取得しなくても、 UPDATEのSQLのSET節でインクリメントなら カラム名 = カラム名 + 1、デクリメントなら カラム名 = カラム名 - 1という形で記述すれば変更できる。 prepare($sql); // 略 特定のインクリメントに限らず特定の数の足し引き…

MySQL WHEREでnullのデータを検索条件にしたい

PHPのPDOでWHEREの検索条件をnullにしてsqlを発行したいと思い下記のようなSQLを作ってみました。 SELECT * FROM {$TABLE} WHERE {$COLUMN} = null; 残念ながらこれだと上手く取得できませんでした。 nullを検索条件にする時はis nullを使うと良いようです。…

PHP PDO 直近にINSERTされたデータのIDを取得したい

mysql_connect()でMySQL接続していた時でいう所のmysql_insert_id()の様に直近にINSERTされたデータのIDをPDOで取得する方法。 lastInsertID()を使う。 http://php.net/manual/ja/pdo.lastinsertid.php public string PDO::lastInsertId ([ string $name = N…

PHP PDO bindParam()と日付型(DATE, DATETIME)とBOOL型にハマる

PHPのPDOを使ってDBにデータを挿入しようとした際にハマりました。 bindParam()に直接値を書くをエラーになる。 データが無ければnullを入れようと思い下記の様なコードを書いていました。 ("INSERT INTO {$TABLE} (data) VALUES (:data)"); if(!empty($data…