php
1LOCK TABLES `edit_user` `eu` WRITE 2 3//でロック後、 4 5SELECT * FROM `edit_user` 6 7//ではエラーがでますが 8 9SELECT * FROM `edit_user` `eu` 10//ではエラーがでず正常にSELECTできます。 11 12//同じように 13DELETE FROM `edit_user` 14//では 15//SQLSTATE[HY000]: General error: 1100 Table 'edit_user' was not locked with LOCK TABLES 16//というエラーがでるので 17 18DELETE FROM `edit_user` `eu` 19//とやると 20//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 '`eu` WHERE `shop_code` = '000000000' AND `user_id` = '9000000006' AND `exten` = ' at line 1 21 22DELETE FROM `edit_user` eu 23//とやると 24//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 'eu WHERE `shop_code` = '000000000' AND `user_id` = '9000000006' AND `exten` = '5' at line 1 25 26 27
どうすれば削除できるのでしょうか???
追記
ロック時にエイリアスつけずに試したらできました。
$sql = 'LOCK TABLES `edit_user` WRITE'; $stmt = $this->pdo->query($sql); if ($stmt == false) { var_dump("ロック失敗"); } else { var_dump("ロックしました"); } $sql = "SELECT COUNT(*) as count FROM `edit_user`"; var_dump($sql); $stmt = $this->pdo->query($sql); $row = $stmt->fetch(PDO::FETCH_ASSOC); var_dump($row['count']); $sql = "DELETE FROM `edit_user`"; var_dump($sql); $stmt = $this->pdo->query($sql); if ($stmt == false) { var_dump("削除失敗"); } else { var_dump("削除しました"); } //全部通る。
エイリアスつけるとなぜ削除できないのでしょうか?
こういうパターンはダメなようですが、なぜダメなのかがわからず
$sql = 'LOCK TABLES `edit_user` `eu` WRITE'; $stmt = $this->pdo->query($sql); if ($stmt == false) { var_dump("ロック失敗"); } else { var_dump("ロックしました"); } $sql = "SELECT COUNT(*) as count FROM `edit_user` `eu`"; var_dump($sql); $stmt = $this->pdo->query($sql); $row = $stmt->fetch(PDO::FETCH_ASSOC); var_dump($row['count']); //ここまでしか通らない。 $sql = "DELETE FROM `edit_user` `eu`"; var_dump($sql); $stmt = $this->pdo->query($sql); if ($stmt == false) { var_dump("削除失敗"); } else { var_dump("削除しました"); }
回答3件
あなたの回答
tips
プレビュー