PHPからMySQLサーバーのuser
テーブルでuser_id
の重複があれば、書き込みをスキップするという流れで書いているのですがuser_id
が重複しても書き込まれてしまいます。
問題のコード↓
id | user_id |
---|---|
1 | 1234 |
2 | 1234 |
重複する
PHP
1function register($srv, $uid) { 2 $query = <<<QUERY 3INSERT INTO `user` (`user_id`) 4 SELECT 5 $uid 6 FROM DUAL 7 WHERE NOT EXISTS ( 8 SELECT * FROM `user` 9 WHERE `user_id` = $uid 10 ) 11QUERY; 12 13 $sth = $srv->prepare($query); 14 15 $sth->execute(); 16 17 return $sth; 18}
ヒアドキュメントで$uid
変数を使わずにやると問題はないのですが(以下例)
問題ないコード↓
id | user_id |
---|---|
1 | 1234 |
※書き込みされない
PHP
1 $query = <<<QUERY 2INSERT INTO `user` (`user_id`) 3 SELECT 4 `1234` 5 FROM DUAL 6 WHERE NOT EXISTS ( 7 SELECT * FROM `user` 8 WHERE `user_id` = `1234` 9 ) 10QUERY;
何か特別に展開方法を変えないといけなかったりするのでしょうか?
よろしくご教授お願いします。