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