搜索文件并将其存储在变量php中

时间:2013-12-19 22:19:21

标签: php mysql search

我有一个像这样的文本文件

1 wordsgohere
2 morewordsgohere
3 yougetthepoint

我想将上面的一个字符串分配给该人的user_id。所以说你是第三个注册的人,你的user_id是3,你的deposit_id将是'yougetthepoint'。但是,当我回显user_id时,即使数据库中有2或3个用户,并且在查看数据库时,id号也会增加。它也不会将用户置于数据库中。如果我用其他东西替换deposit_id,它会将用户放在数据库中。我认为这是因为new_str永远不会被定义。

    // id of new user
    $user_id = $this->db_connection->lastInsertId();

    echo $user_id;

    // searches text file for address
    $lines_array = file("test.txt");

    foreach($lines_array as $line) {
    echo $line;
            if(strpos($line, $user_id) != false) {
                    list(, $new_str) = explode($user_id, $line);

            }
    }


    // write new users data into database
    $query_new_user_insert = $this->db_connection->prepare('INSERT INTO users (deposit_id, user_name, user_password_hash, user_email, user_activation_hash, user_registration_ip, user_registration_datetime) VALUES(:deposit_id, :user_name, :user_password_hash, :user_email, :user_activation_hash, :user_registration_ip, now())');
    $query_new_user_insert->bindValue(':deposit_id', $new_str, PDO::PARAM_STR);
    $query_new_user_insert->bindValue(':user_name', $user_name, PDO::PARAM_STR);
    $query_new_user_insert->bindValue(':user_password_hash', $user_password_hash, PDO::PARAM_STR);
    $query_new_user_insert->bindValue(':user_email', $user_email, PDO::PARAM_STR);
    $query_new_user_insert->bindValue(':user_activation_hash', $user_activation_hash, PDO::PARAM_STR);
    $query_new_user_insert->bindValue(':user_registration_ip', $_SERVER['REMOTE_ADDR'], PDO::PARAM_STR);

    $query_new_user_insert->execute();

任何帮助都会很棒,谢谢。

1 个答案:

答案 0 :(得分:0)

有些人在你的评论中提到你应该检查陈述的顺序。

首先将行插入数据库。在执行时,数据库将生成您之后可以检索的ID。

现在您要将Deposit_id添加到生成的条目中。只需更新条目(UPDATE users SET deposit_id=:deposit_id WHERE user_id=:user_id;)。

但我认为你会得到一个你不想要的结果。

textfile中的数字真的是user_id吗?或只是一个枚举?你可以解析它并按文件的顺序创建一个包含deposit_ids的数组。现在,您可以通过为每个数组条目运行一个插入来插入所有行