php - Sql只选择第一行

标签 php mysql sql pdo

我有一个登录数据库,并且有许多用户,当我尝试使用数据库中首先列出的用户登录时,它工作得很好。但是,当我使用另一个用户登录时,它不起作用,它似乎只会选择第一行。我的查询有什么问题?

  $username = $_POST['Username'];
  $salt = substr($username, 0, 2);
  $password = crypt($_POST['Password'], $salt);

  $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
  $query = $dbh->prepare("SELECT * FROM `7Ducklings` WHERE Username = ? AND Password = ?");
  $array = array($username, $password);
  $query->execute($array);
  $numrows = $query->fetchColumn();

  if($numrows == 1)
  {
    echo "success";
  }
  else
  {

  }
  $dbh = null;

编辑:成功打印 $numrows 时,我得到 1,否则我得到 0。会不会是盐的问题?

最佳答案

修改 if 语句以检查 Empty 或 TRUE/FALSE。 fetchColumn() 返回结果集下一行中的单个列,如果没有更多行,则返回 FALSE。 PDO FetchColumn

 $username = $_POST['Username'];
 $salt = substr($username, 0, 2);
 $password = crypt($_POST['Password'], $salt);

 $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
 $query = $dbh->prepare("SELECT * FROM `7Ducklings` WHERE Username = ? AND Password = ?");
 $array = array($username, $password);
 $query->execute($array);
 $numrows = $query->fetchColumn();

 if(!empty($numrows))
 {
echo "success";
}
else
{

}
$dbh = null;

关于php - Sql只选择第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20394671/

相关文章:

php - 循环遍历数组并按值删除/取消设置

php - Symfony PDOSessionHandler 重新连接到 Ratchet websocket 服务器的 MySQL 数据库

MySQL 选择列值的最大计数

MySQL - 错误 1071、 "specified key was too long..."阻止更改字符集/归类

mysql - 如何在 MySQL 中重置 AUTO_INCRMENT

sql - 在多对多 SQL 表中查找数据关系或图形

php - WP迁移,无法登录WP admin

javascript - 根据 POST 中的 dstore/Rest 结果更新 OnDemandGrid,而不是 PUT

mysql - cakephp 3 (My)SQL 聚合函数 max() 语法错误靠近 'AS MAX(` 用户`_ _`date_time` ) AS `date`

sql - 如何简单地加入 Rails 中的 n 对 n 关联?