一尘不染

插入时串联字符串和主键ID

mysql

我在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是自动增量主键字段。

这样用户名才能井井有条:

user1
user2
user3 and so forth

有什么精巧的方法可以做到这一点?


阅读 269

收藏
2020-05-17

共1个答案

一尘不染

如果user_id是AUTO_INCREMENT主键,那么即使使用触发器,也无法使用单个语句来执行此操作。

问题在于直到BEFORE INSERT触发器运行之后才生成AUTO_INCREMENT值,但是您无法usernameAFTER INSERT触发器中进行更改。

因此,您只需要执行INSERT,然后立即执行UPDATE

如果user_id没有 一个AUTO_INCREMENT,而是是你指定你自己,那么它很容易,你只需做串联在你的PHP代码,你传递值作为参数之前。

2020-05-17