插入时连接字符串和主键ID

时间:2014-04-28 01:27:44

标签: php 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

什么是实现这一目标的光滑方式?

2 个答案:

答案 0 :(得分:2)

如果user_id是AUTO_INCREMENT主键,则即使使用触发器,也不能使用单个语句执行此操作。

问题是在BEFORE INSERT触发器运行之后才会生成AUTO_INCREMENT值,但您无法在username触发器中更改AFTER INSERT

所以你必须执行INSERT,然后立即执行UPDATE

如果user_id 不是是一个AUTO_INCREMENT,而是您自己指定的东西,那么很容易,您只需在将PHP值作为参数传递之前在PHP代码中进行连接。

答案 1 :(得分:0)

假设用户名始终'用户' + userid,我能想到的最简单的方法是在其中包含除username之外的所有内容的表,以及在该表顶部添加username的视图。然后,您可以在表格上执行任何插入和更新,并且可以在视图上完成任何需要username的选择。

CREATE VIEW userview AS 
SELECT user_id, first_name, last_name, gender, profile_picture, provider, 
       provider_id, provider_username, provider_profile, provider_profile_picture,
       last_login, created_date, ip_address, 'user' + user_id as username
FROM USER