【问题标题】:extracting info from database to html page error从数据库中提取信息到 html 页面错误
【发布时间】:2018-08-03 06:55:59
【问题描述】:

我对 PHP 很陌生,所以如果这是一个简单的修复,我很抱歉,但我遇到了一个奇怪的问题。我创建了一个使用 facebook 身份验证的网站。一旦他们登录,他们的信息就会存储在我创建的数据库中。然后我创建了一些功能,在我的网站的个人资料页面上显示用户的 Facebook 图像和名称。问题是有时它会显示,而其他时候我会收到此错误。 “注意:未定义的索引:第 132 行 /PATH/ 中的 fbid”。这是代码。

<div id="userInfo" class="userInfo">
<h1> <?php
$dbHost     = "localhost";
$dbUsername = "root";
$dbPassword = "root";
$dbName     = "facebooklogin";


$conn = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);


if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} 


$sql = "SELECT first_name, last_name, picture FROM users WHERE 
oauth_uid = '".$_SESSION['fbid']."'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {

while($row = $result->fetch_assoc()) {
    echo " ". $row["first_name"]." ". $row["last_name"]."";
}
} else {
echo "0 results";
}

$conn->close();
?></h1>

userData.php

<?php
session_start();
include 'dbConfig.php';


$userData = json_decode($_POST['userData']);
if(!empty($userData)){
$oauth_provider = $_POST['oauth_provider'];
$_SESSION['fbid'] = $userData->id;
var_dump($_SESSION);

$prevQuery = "SELECT * FROM users WHERE oauth_provider = 
'".$oauth_provider."' AND oauth_uid = '".$userData->id."'";

$prevResult = $db->query($prevQuery);
if($prevResult->num_rows > 0){ 

    $query = "UPDATE users SET first_name = '".$userData-
>first_name."', last_name = '".$userData->last_name."', email = 
'".$userData->email."', gender = '".$userData->gender."', locale = 
'".$userData->locale."', picture = '".$userData->picture->data->url."', 
link = '".$userData->link."', modified = '".date("Y-m-d H:i:s")."' 
WHERE oauth_provider = '".$oauth_provider."' AND oauth_uid = 
'".$userData->id."'";
    $update = $db->query($query);
}else{

    $query = "INSERT INTO users SET oauth_provider = 
'".$oauth_provider."', oauth_uid = '".$userData->id."', first_name = 
'".$userData->first_name."', last_name = '".$userData->last_name."', 
email = '".$userData->email."', gender = '".$userData->gender."', 
locale = '".$userData->locale."', picture = '".$userData->picture-
>data->url."', link = '".$userData->link."', created = '".date("Y-m-d 
H:i:s")."', modified = '".date("Y-m-d H:i:s")."'";
    $insert = $db->query($query);
}
}

?>

【问题讨论】:

  • 似乎您在进行查询时根本没有变量 $_SESSION['fbid']
  • 谢谢。你能详细说明我在哪里识别变量吗?
  • 我在回答中详细说明了,有用吗?

标签: php database login


【解决方案1】:

您在查询中使用时似乎没有设置变量。

查询前检查,如:

if (isset($_SESSION['fbid'])) {
$sql = "SELECT first_name, last_name, picture FROM users WHERE 
oauth_uid = '".$_SESSION['fbid']."'";
$result = $conn->query($sql); } else { 
// not logged in
}

要检查 $_SESSION 的值,只需执行 var_dump($_SESSION) 即可查看设置的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-23
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    相关资源
    最近更新 更多