当我注册一个用户时,我将他们添加到数据库中,他们得到一个由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不匹配。
发布于 2016-08-03 06:50:05
您需要迭代结果集以获得id的值。
$id="";
while ($row = mysql_fetch_array($select_id))
{
$id= $row ['id'];
}
if($id!=""){
session_start();
$_SESSION["Register"] = $id;
}注意: mysql_query在PHP5.5.0中被弃用,在PHP7.0.0中被删除。相反,MySQLi或PDO_MySQL扩展应该是该函数的used.Alternatives,包括:mysqli_query() or PDO::query()
此外,直接将值传递到查询中是不安全的。请阅读关于SQL injection的文章
发布于 2016-08-03 06:50:11
您可以使用mysql_insert_id()
mysql_query("INSERT INTO mytable (1, 2, 3, 'blah')");
$last_id = mysql_insert_id();参见:id()
注释:PHP5.5.0中不推荐使用 mysql_query,PHP7.0.0中删除了它。相反,MySQLi或PDO_MySQL扩展应该是该函数的used.Alternatives,包括:查询()或PDO::query()
发布于 2016-08-03 07:00:56
作为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;
}
}https://stackoverflow.com/questions/38736298
复制相似问题