当我注册用户时,我将它们添加到数据库中,并获得一个由auto_increment自动生成的id。现在我尝试将该id添加到会话变量中,这样我就可以在网站的其他页面上使用它并操纵它们在数据库中的行。这是我到目前为止所做的。
当用户注册时,此行将表单输入添加到db:
$insert = mysql_query("INSERT INTO users (`email`, `password`) VALUES ('example','values'))");
然后我试图将user_id变成一个我可以在网站的其他页面上使用的变量。我试过这个:
if ($insert) {
$select_id = mysql_query("SELECT `id` from `users` WHERE `email` = '$form_input'");
$id_arr = mysql_fetch_array($select_id);
$id_var = $id_arr['id'];
session_start();
$_SESSION["Register"] = $id_var[0];
}
但它没有用,所以我尝试使用var_export来查看$ id_var中的内容,并得到' 3'它与那些应该存储在变量中的user_id不匹配。
答案 0 :(得分:1)
您需要迭代结果集以获取id
$id="";
while ($row = mysql_fetch_array($select_id))
{
$id= $row ['id'];
}
if($id!=""){
session_start();
$_SESSION["Register"] = $id;
}
注意:在PHP 5.5.0中不推荐使用mysql_query,它已在PHP 7.0.0中删除。相反,应该使用MySQLi或PDO_MySQL扩展。此功能的替代方案包括:mysqli_query() or PDO::query()
此外,将值直接传递给查询并不安全。请阅读SQL injection
答案 1 :(得分:0)
您可以使用mysql_insert_id()
mysql_query("INSERT INTO mytable (1, 2, 3, 'blah')");
$last_id = mysql_insert_id();
注意:在PHP 5.5.0中不推荐使用mysql_query,它已在PHP 7.0.0中删除。相反,应该使用MySQLi或PDO_MySQL扩展。此功能的替代品包括:mysqli_query()或PDO::query()
答案 2 :(得分:0)
作为Jens
的评论。我强烈建议您使用mysqli
甚至更好PDO
。由于mysql
为depreciated
并已在PHP7
中完全删除。
现在按照你的代码试试这个
if ($insert) {
$select_id = mysql_query("SELECT `id` from `users` WHERE `email` = '$form_input'") or die(mysql_error());// to see error
if($select_id != null){
$id_arr = mysql_fetch_array($select_id);
$id_var = $id_arr['id'];
session_start();
$_SESSION["Register"] = $id_var;
}
}