我做错了什么? (PHP准备声明)

时间:2015-06-18 01:29:12

标签: php mysql sql wordpress prepared-statement

我第一次使用准备功能,并让它部分工作。基本上,我正在将用户密码从一个数据库复制到另一个数据库(我正在转移用户的一部分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();

我想也许语法错了?我不知道。我希望我的问题足够明确。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

我明白了!

最初,我把代码放在准备语句和代码中以便一起执行它。 {$ 1}}和imap_mail_move需要放在$ i自动递增之前。需要在$ i自动递增后放置prepare。这是有效的代码:

bind_param

感谢大家的投入!

相关问题