【问题标题】:PHP mysqli query isnt workingPHP mysqli查询不起作用
【发布时间】:2012-10-26 21:11:04
【问题描述】:

当用户输入他们的详细信息时,他们点击登录但它不起作用,我与数据库的连接很好,但这个文件不起作用,任何帮助将不胜感激,谢谢

include '../connection.php'; //used to include connection file that is 1 level higher in the directory 

$username = $_REQUEST['username'];
$password = $_REQUEST['password'];

$fquery = 'SELECT Username FROM login LIMIT 0, 30 ';
$squery = 'SELECT Password FROM login LIMIT 0, 30 ';

$username_query = mysqli_query($dbc, $fquery);
$password_query = mysqli_query($dbc, $squery);

$username_row = mysqli_fetch_array($username_query);
$password_row = mysqli_fetch_array($password_query);

if($username == $username_row && $password == $password_row) {
    echo 'username and password correct';
}


?>

【问题讨论】:

  • “不工作”是什么意思?一个空白屏幕?错误信息?返回了错误的数据?
  • 另外,您可能想查看查询中的逻辑;您正在查看表中是否存在用户名和密码,但不一定是同一个帐户....
  • 请注意,这永远不会奏效。您假设您的用户/密码永远不会超过 30 个,然后将请求变量与数组进行比较,并不能确保用户实际上与密码匹配。
  • @andrewsi 当我点击输入时,表单什么也不显示,它只是保持不变
  • 您的逻辑中似乎缺少一些部分。您是否真的单步调试过您的代码以查看每个变量是什么?或者至少您的查询是什么以及它们返回什么?

标签: php database login mysqli


【解决方案1】:
<?php

include '../connection.php'; //used to include connection file that is 1 level higher in the directory 

$username = $_REQUEST['username'];
$password = $_REQUEST['password'];

$query = 'SELECT Username FROM login WHERE Username = ? AND Password = ?';

/* set a default value to check against */
$valid_user = '';

/* use prepared statement */
$stmt = mysqli_stmt_init($dbc);
if (mysqli_stmt_prepare($stmt, $query)) {
    /* set question marks equal to values */
    mysqli_stmt_bind_param($stmt, 'ss', $username, $password);
    mysqli_stmt_execute($stmt);

    /* get the valid username only if query is successful */
    mysqli_stmt_bind_result($stmt, $valid_user);
    mysqli_stmt_fetch($stmt);

    /* close the statment */
    mysqli_stmt_close($stmt);
}


/* check if default was overwritten */
if($valid_user != '') {
    echo 'username and password correct';
}
?>

试试这个,应该会完成你想做的事情。

【讨论】:

    【解决方案2】:
         $username_query = mysqli_query($dbc, $fquery);
         $password_query = mysqli_query($dbc, $squery);       
         $username_row   = $username_query->fetch_array(MYSQLI_ASSOC);
         $password_row   = $password_query->fetch_array(MYSQLI_ASSOC);        
    
         if($username == $username_row['username'] && $password == $password_row['Password']) {
           echo 'username and password correct';
         }
    

    【讨论】:

      【解决方案3】:
      $username = mysqli_real_escape_string($dbc, $_REQUEST['username']);
      $password = mysqli_real_escape_string($dbc, $_REQUEST['password']);
      $query = "SELECT * FROM login WHERE Username = '$username' AND Password = '$password' LIMIT 1";
      
      if(mysqli_num_rows($query) > 0)
          echo 'username and password correct';
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多