Php 使用$\u会话从用户表获取id

Php 使用$\u会话从用户表获取id,php,sql,Php,Sql,我有一个简单的登录,当用户登录后,他们可以上传标题和评论(还有一张图片,但我们可以忽略它,因为这样可以正常工作)到数据库。我想要的是将当前登录的用户的用户id也插入到数据库中。这是我当前的代码 login.php <?php session_start(); if(isset($_SESSION["user"])){ header("location:index.php"); exit(); } ?> <?php if(isset($_POST["user

我有一个简单的登录,当用户登录后,他们可以上传标题和评论(还有一张图片,但我们可以忽略它,因为这样可以正常工作)到数据库。我想要的是将当前登录的用户的用户id也插入到数据库中。这是我当前的代码

login.php

<?php
session_start();
if(isset($_SESSION["user"])){
    header("location:index.php");
    exit();
}

?>

<?php

if(isset($_POST["username"]) && isset($_POST["password"])){
    // Filter everything except letters and numbers
    $user = preg_replace('#^A-Za-z0-9#i','',$_POST["username"]);
    $password = preg_replace('#^A-Za-z0-9#i','',$_POST["password"]);

    // Connect to mySQL
    include"assets/scripts/sql_connect.php";

    // Query the person
    $sql = $conn->query("SELECT id FROM user_login WHERE user_name='$user' AND user_password='$password' LIMIT 1");

    // Make sure person exists
    $existCount = $sql->rowCount();

    // Evaluate the count
    if($existCount == 1){
        while($row = mysql_fetch_array($sql)){
            $id = $row["id"];
        }
        $_SESSION["id"] = $id;
        $_SESSION["user"] = $user;
        $_SESSION["password"] = $password;
        header("location:index.php");
        exit();
    }else{
        echo"Login details incorrect, try again <a href='index.php'>Click here</a>";
        exit();
    }
}
?>


使用
mysql\u fetch\u assoc()
而不是
mysql\u fetch\u array()
试一试

if($existCount==1){
while($row=mysql\u fetch\u assoc($sql)){
$id=$row[“id”];
$\会话[“id”]=$id;
打破
}
$\u会话[“用户”]=$user;
$\u会话[“密码”]=$password;
标题(“location:index.php”);
退出();
}否则{
echo“登录详细信息不正确,请重试”;
退出();
}

希望有帮助:)

设法解决它。我变了

while($row = mysql_fetch_array($sql)){
在login.php中

while($row = $result->fetch(PDO::FETCH_ASSOC)){

我已经在login.php中启动了会话。对不起,我应该在我原来的帖子中也包括这一点。我已经编辑了我的原始帖子,以反映这个.echo$_会话[“id”]在插入查询之前检查它的值并告诉我。我也许能帮上忙。它根本没有回声。我可以回显,它会显示当前登录用户的用户名,但不会给出任何信息。它是空的。如果我在您编辑后这样做,我会收到通知:未定义的索引:id在C:\wamp。。。。。错误。这意味着$\u会话[“id”]=$id;没有执行。在“我的代码”中输入之前,请尝试打印($row)。如果不打印,这意味着while循环未执行。如果您在sql查询之后执行
echo$id
,它是否正在打印某些内容?不,它不打印任何内容。因此,这是sql查询的问题,而不是来自会话的问题。在进行sql查询之前,请检查
$user
$password
是否如您所愿。我不确定“如您所愿”是什么意思。我想说的是回显这些变量,看看它们是否良好或是否有问题(如果它们不等于您发送的值)
while($row = mysql_fetch_array($sql)){
while($row = $result->fetch(PDO::FETCH_ASSOC)){