通过查询从mysql数据库中读取数据值

时间:2017-10-28 18:10:06

标签: php mysql mysqli

我的网站上有登录和注册php系统。它工作得很好。但是我想在数据库中添加另一列。这是平衡。我想显示用户的余额'当他们登录网站时。 我试图通过使用这个来选择余额数据:

em.persist(entity)

我是php编程的新手,因此我不确定这段代码有什么问题。 sql数据库如下所示:

<?php
$balance = mysqli_query("SELECT balance FROM users WHERE username='$username' 
AND password='$password'");
echo $balance
?>

我会从我的代码中假设变量$ balance将根据收到的值设置,如果登录页面上输入的用户名和密码是在数据库中找到的。将打印与此相关的余额。 这包含在我的网页html部分中,用于显示余额值:

id    username    email    password    balance
test  test        test     test        test

在测试网站时,我收到以下错误

  

警告:mysqli_query()需要至少2个参数,1在第3行的D:\ Windows \ xampp \ htdocs \ TESTSITE \ FrontPage.php中给出

我试图通过研究来解决这个问题,但我无法找到解决方案。欢迎任何解决方案,因为我已经停止了开发。

此外,我知道这是非常不安全的,我将确保在网站上线时代码更加安全。我现在只是在测试。

2 个答案:

答案 0 :(得分:1)

你有4个问题。

  1. 您需要哈希用户密码,存储明文密码是不好的做法。
  2. 您需要参数化您的查询,因为没有它您可以打开SQL注入,并且根据用户的用户名/密码可能会无意中破坏您的查询。
  3. query函数需要参数1作为连接对象。
  4. query函数返回需要获取的结果对象。
  5. 这是一个应该运行的更新版本。这假定$conn是您的连接。

    <?php
    $stmt = mysqli_prepare($conn, "SELECT balance FROM users WHERE username=? AND password=?");
    mysqli_stmt_bind_param($stmt, 'ss', $user, $password);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_bind_result($stmt, $balance);
    mysqli_stmt_fetch($stmt);
    echo $balance;
    ?>
    

    这不考虑散列。请参阅http://php.net/manual/en/function.password-hash.phphttp://php.net/manual/en/function.password-verify.php。您需要在当前哈希数据库中的所有值。

答案 1 :(得分:-2)

  1. 如果你使用的是mysqli,你必须这样设置:

    $balance = mysqli_query($connection,"SELECT balance FROM users WHERE username='$username' 
    

    AND password ='$ password'“); // $ connection是您的连接配置。

  2. 您必须从输入中获取价值,如下所示:

    $email = $_POST['email'];
    $pass = $_POST['pass'];
    
  3. 然后从查询中获取布尔值,如下所示:

    if($balance) echo 'success' else echo 'wrong';