我的帖子上传公式有问题,需要您的帮助。
使用此公式,我将数据同时插入到2个表中,并且工作得很好。我的下一步是在帖子表中插入userid
,以便将帖子链接到帖子的创建者。
在发布表中插入userid
也可以,但是在上传后,用户将被注销。
这是我的代码的一部分
(我在代码中标记了一个"X"
有问题的地方)
session_start();
$db = mysqli_connect("localhost", "root", "", "abc");
if (isset($_POST['upload_post']))
{
$ad_post_title = mysqli_real_escape_string($db, $_POST['post_title']);
X $user_id = $_SESSION['id_u'];
X $_SESSION['id_u'] = mysqli_insert_id($db);
X $sql_p = "INSERT INTO ad_posts (post_title, user_id) VALUES ('$post_title','$user_id')";
if (mysqli_query($db, $sql_p))
{
$ad_post_id = mysqli_insert_id($db);
...
}
}
也许我的会话做错了什么?
答案 0 :(得分:1)
在代码的第二行,您正在覆盖用户ID的会话变量,我认为您正在使用该变量来确保用户已登录,并带有新插入的行的ID。
$user_id = $_SESSION['id_u'];
X $_SESSION['id_u'] = mysqli_insert_id($db);
$sql_p = "INSERT INTO ad_posts (post_title, user_id) VALUES ('$post_title','$user_id')";
在您提供的代码中,我看不出这是第二行的原因,请将其删除,否则您的用户将不会注销,除非您当然也在其他地方覆盖了它。
答案 1 :(得分:1)
在系统中添加数据之前,不能使用mysqli_insert_id()。 我在系统中检查了相同的代码,并且工作正常。
session_start();
$db = mysqli_connect("localhost", "root", "", "abc");
if (isset($_POST['upload_post']))
{
$ad_post_title = mysqli_real_escape_string($db, $_POST['post_title']);
$user_id = $_SESSION['id_u'];
$sql_p = "INSERT INTO ad_posts (post_title, user_id) VALUES ('$post_title','$user_id')";
if (mysqli_query($db, $sql_p))
{
$ad_post_id = mysqli_insert_id($db);
...
}
}