我有一个像这样的文本文件
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();
任何帮助都会很棒,谢谢。
答案 0 :(得分:0)
有些人在你的评论中提到你应该检查陈述的顺序。
首先将行插入数据库。在执行时,数据库将生成您之后可以检索的ID。
现在您要将Deposit_id添加到生成的条目中。只需更新条目(UPDATE users SET deposit_id=:deposit_id WHERE user_id=:user_id;
)。
但我认为你会得到一个你不想要的结果。
textfile中的数字真的是user_id吗?或只是一个枚举?你可以解析它并按文件的顺序创建一个包含deposit_ids的数组。现在,您可以通过为每个数组条目运行一个插入来插入所有行