我在mysql中有一个用户表,我这样插入数据:
/* prepare query */ $query = 'INSERT INTO `users`(`first_name`, `last_name`, `gender`, `username`, `profile_picture`, `provider`, `provider_id`, `provider_username`, `provider_profile`, `provider_profile_picture`, `last_login`, `created_date`, `ip_address`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), NOW(), INET_ATON(?))'; /* Prepare an insert statement */ $stmt = $mysqli->prepare($query); if($stmt){ $stmt->bind_param("sssssssssss", $user['first_name'], $user['last_name'], $user['gender'], $user['username'], $user['profile_picture'], $user['provider'], $user['id'], $user['username'], $user['link'], $user['profile_picture'], $_SERVER['REMOTE_ADDR']); $stmt->execute(); /* Execute the statement */
我想使username等于等于'user'+ userId是自动增量主键字段。
username
'user'
userId
这样用户名才能井井有条:
user1 user2 user3 and so forth
有什么精巧的方法可以做到这一点?
如果user_id是AUTO_INCREMENT主键,那么即使使用触发器,也无法使用单个语句来执行此操作。
user_id
问题在于直到BEFORE INSERT触发器运行之后才生成AUTO_INCREMENT值,但是您无法username在AFTER INSERT触发器中进行更改。
BEFORE INSERT
AFTER INSERT
因此,您只需要执行INSERT,然后立即执行UPDATE。
INSERT
UPDATE
如果user_id是 没有 一个AUTO_INCREMENT,而是是你指定你自己,那么它很容易,你只需做串联在你的PHP代码,你传递值作为参数之前。