如何从mysql数据库表中检索用户数据

时间:2017-12-23 21:16:17

标签: php mysql database mysqli

所以我在从我的数据库中检索用户数据时遇到问题,它连接到数据库很好,并且登录正常,它只显示用户问题,如“全名”和“电子邮件”,这些都给我带来了问题。我到处搜索,但我在网上看到的解决方案似乎都没有用,所以我在这里问自己的问题,

这是我的配置文件

    <?php
    $con = 
    mysqli_connect("server","db_Admin","db_pass123","db_name");
    if(!$con):
    die('Connect Error (' . mysqli_connect_errno() . ') '. 
    mysqli_connect_error());
    endif;
    ?>

这是我的登录脚本

<?php

require 'config.php';
require 'core.php';

if (isset($_POST['email']) && isset($_POST['password'])) {
    $email = $_POST['email'];
    $password = $_POST['password'];

    $password_hash = md5($password);

    if (!empty($email) && !empty($password)) {

        $query = "SELECT `id` FROM `users` WHERE `email` = '$email' AND 
        `password` = '$password_hash'";

        if ($query_run = mysqli_query($con, $query)) {
            $query_num_rows = mysqli_num_rows($query_run);

            if ($query_num_rows == 0) {
                echo 'Invalid email/password combination.';
            } else if ($query_num_rows == 1) {
                echo $user_id = mysqli_fetch_row($query_run);
                $_SESSION['user_id'] = $user_id;
                header('Location: account.php');
            }
        }
    } else {
        echo 'You must supply an email and a password.';
    }
}

像魅力一样工作,然后这里是罪魁祸首,'core.php'脚本,它适用于我的localhost,但后来我使用mySQL而不是mySQLi

   require 'config.php';
   ob_start();
   session_start();


    function loggedin() {
    if (isset($_SESSION['user_id'])&&!empty($_SESSION['user_id'])) {
    return true;
    } else {
    return false;
      }
    }

    function getuserfield($field) {
    $query = "SELECT `$field` FROM `users` WHERE `id` = 
    '".$_SESSION['user_id']."'";

    if ($query_run = mysqli_query($con, $query)) {
    if ($query_result = mysqli_result($query_run, 0, $field)) {
      return $query_result;
      }
    }
   }

然后这是我尝试使用getuserfield()函数获取数据时得到的错误

    $fullname =  getuserfield('fullname');
    echo 'fullname';

我收到以下错误

  

警告:mysqli_query()期望参数1为mysqli,给定字符串   在/home/mysite/public_html/core/core.php第18行

我确信我有一些非常明显的缺失,但我几乎是初学者,所以我真的很感激任何帮助

编辑:对于那些由于某种原因降低了这个问题的可见性的人,我认为我没有做足够的研究,而是将其投票给一个负面的数字,以下是一些解决方案的链接我尝试过的那些都没用;

  1. http://www.java2s.com/Code/Php/MySQL-Database/Usemysqlitofetchdatafrommysql.htm
  2. http://php.net/manual/en/mysqli-result.fetch-row.php
  3. Unable to fetch data from database using MySQLi
  4. Get data with mysqli from database
  5. https://www.w3schools.com/php/func_mysqli_fetch_row.asp
  6. Warning: mysqli_query() expects parameter 1 to be mysqli, null given in
  7. http://w3webtutorial.blogspot.nl/2013/11/select-data-from-database-table-using.html
  8. Retrieve data from database using mysqli
  9. http://www.techietet.com/howto/fetch-data-database-using-phpmysqli-select-query
  10. Fetching one row only with MySQLi
  11. Mysqli_query result to variable PHP
  12. PHP login and get user information
  13. MYSQLI query to get one single result
  14. 此时我甚至不想在代码中得到答案,有什么我想念的吗?是或否,我应该添加全局连接变量吗?如果我没有在其他地方检查过,我不会在这里。如果它看似重复,那么答案就不在另一个问题中了。

1 个答案:

答案 0 :(得分:-1)

将您的功能更新为此

$loggedUserId = $_SESSION['user_id'];

function getUserField($field, $loggedUserId)
{
    #Database Connection
    global $connection;

    $query = mysqli_query($connection, "SELECT `$field` FROM `users` WHERE `id`='$loggedUserId'");
    $user = mysqli_fetch_array($query);
    return $user[$field];
}

显示结果将是这样的

getUserField('fullname', $loggedUserId)