我第一次使用准备功能,并让它部分工作。基本上,我正在将用户密码从一个数据库复制到另一个数据库(我正在转移用户的一部分WordPress插件)。代码运行并完全按照我的意愿运行,但仅适用于在wp_users表中找到的第一个用户。我需要它继续为该表中的所有用户运行,以便他们都可以转移他们的密码。这是我在下面写的代码:
从原始数据库获取用户密码(基本上,这会找到所有用户的密码并将它们放在一个数组中。我发布此代码仅用于上下文。此代码有效非常好):
$i = 0;
//set $user_count-1 because $i needs to start at 0 to represent the indexes and it also prevents the statement from being looped an extra time.
while($i <= $user_count-1) {
if($result = $conn->query("SELECT * FROM wp_users")) {
if($count = $result->num_rows) {
//echo $count . ' users found.';
while($row = $result->fetch_object()) {
$user_password[] = $row->user_pass;
}
}
$i++;
}
检索索引值(这是我用来实际检索那些索引值并将它们放在sql查询中的代码。就像我说的,它适用于第一个用户,但不是其他用户):
$stmt = $conn->prepare("UPDATE `wp_plugin_development`.`wp_users` SET `user_pass` = ? WHERE `wp_users`.`user_login` = ?");
$stmt->bind_param('ss', $user_password[$i], $user_login[$i]);
$stmt->execute();
我想也许语法错了?我不知道。我希望我的问题足够明确。谢谢你的帮助!
答案 0 :(得分:1)
我明白了!
最初,我把代码放在准备语句和代码中以便一起执行它。 {$ 1}}和imap_mail_move
需要放在$ i自动递增之前。需要在$ i自动递增后放置prepare
。这是有效的代码:
bind_param
感谢大家的投入!