我使用它在WordPress数据库中创建一个新用户......
// Add user to WP users table.
$user_table_name = $wpdb->prefix . "users";
$unique_string = substr(md5(rand(0, 1000000)), 0, 10);
$wpdb->insert( $user_table_name, array(
'user_login' => sanitize_text_field($_POST['email']),
'user_pass' => sanitize_text_field(MD5($unique_string)),
'user_email' => sanitize_text_field($_POST['email']),
'user_registered' => sanitize_text_field(date("Y-n-d G:i:s")),
'user_status' => $_POST['1'],
'display_name' => sanitize_text_field($_POST['first_name']) . " " . sanitize_text_field($_POST['last_name'])
) );
...工作正常,让我们假装该用户的 ID 在数据库表格中为 1234 (由于自动增量)。< / p>
所以现在我还需要将相应的用户元信息添加到该用户的 usermeta 表中,这是我有点困惑的地方。
上面的代码很简单,因为它只是向表中添加一行。但是usermeta表是不同的,因为它需要 - 在这种情况下 - 一堆行,其中 user_ID 1234 分别为:
我猜测SQL语句将与本文开头的语句类似。
如果有人能告诉我,那就太棒了。
更新
所以这主要是完成的。这有效:
// Add corresponding user metadata to WP users table.
$usermeta_table_name = $wpdb->prefix . "usermeta";
$last_id = $wpdb->insert_id;
$role = sanitize_text_field('a:1:{s:10:"subscriber";b:1;}');
$wpdb->query(
$wpdb->prepare(
"
INSERT INTO $usermeta_table_name (
`umeta_id`,
`user_id`,
`meta_key`,
`meta_value` )
VALUES (
NULL,
$last_id,
$usermeta_table_name . 'capabilities',
'$role' )
",
$last_id, $last_id
)
);
这会在 usermeta 表中添加一行,但如何在同一个语句中再添加2行呢?
答案 0 :(得分:0)
答案 1 :(得分:0)
好的,所以我对此感到有些愚蠢 - 尽管公平地说,自从我编写任何SQL以来已经很长时间了: - )
答案只是遵循这种方法:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);