Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP mysqli或stmt如何在PHP变量中存储查询值_Php_Mysqli - Fatal编程技术网

PHP mysqli或stmt如何在PHP变量中存储查询值

PHP mysqli或stmt如何在PHP变量中存储查询值,php,mysqli,Php,Mysqli,我正在尝试从查询中获取变量,并使用此查询将其存储为cookie: $query="SELECT id,username,password FROM employee where email='$email' AND password='$password' Limit 1"; $result= $mysqli->query($query); if($result->num_rows == 1){ $stmt = $mysqli->prepare($query);

我正在尝试从查询中获取变量,并使用此查询将其存储为cookie:

$query="SELECT id,username,password FROM employee where email='$email' AND password='$password' Limit 1";

$result= $mysqli->query($query);

if($result->num_rows == 1){
    $stmt = $mysqli->prepare($query);
    $stmt->execute();
    $stmt->store_result();
    $stmt->bind_result($user_id, $username, $db_password);
    $user_browser = $_SERVER['HTTP_USER_AGENT'];
    $_SESSION['user_id'] = $user_id;
    //used echo to check stored variables

    echo "user_id=".$_SESSION['user_id'];
    //used echo here to check the query result

    $_SESSION['username'] = $username;
    echo "username=".$username;
    $_SESSION['login_string'] = hash('sha512', 
    $password . $user_browser);
        // Login successful.
        return true;
    }
     else{
        // Password is not correct
        // We record this attempt in the database
        $now = time();
        $mysqli->query("INSERT INTO login_attempts(user_id, time)
                        VALUES ('$user_id', '$now')");
        return false;
    }
}
我在网站上看到的是:
user\u id=0username=
这就是我解决问题的方法:

$quer="SELECT id,username FROM employee where email=?";

if($result->num_rows == 1){

$stmt = $mysqli->prepare($quer);
$stmt->bind_param('i',$email);
$stmt->execute();
$stmt->bind_result($user_id,$username);
增加:

while($stmt->fetch()) {}
用于:

得到结果:

Cookies username:test_user db usernametest_user

感谢大家的帮助。

首先,尝试更改sql查询。不要以这种方式给$email和$password。尝试在mysql中使用bindParam。然后检查一次并告诉发生了什么?在
$result=$mysqli->query…
如果(!$result){die('Error querying db:'.$mysqli->Error);}
)之后再添加一行,如果有任何错误,请告诉我。什么@anantkumarsingh有点离题,但建议您绑定参数以防止。另外,确保您有
session_start()操作。$quer=“从员工处选择id、用户名、密码,其中电子邮件=?限制1”$stmt->repare($query)$stmt->bind_参数('i',$email)$stmt->execute()$stmt->store_result()$stmt->bind\u result($user\u id、$username、$db\u password);给出了与以前相同的输出。这是您的确切代码吗?如果是这样的话,
->repare
将永远不会起作用;`->准备。是的->准备idk如何变成->在这里准备
Cookies username:test_user db usernametest_user