您好我正在使用php进行基本登录脚本。因为我不担心安全性,我只是想让它起作用。但由于某些原因,当数据库中存在值时,它会一直返回false。
编辑:connection.php包含登录数据库的信息。
$config['db'] = array(
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'mywebsite'
);
$db = new PDO('mysql:host=' . $config['db']['host']. ';dbname=' . $config['db']['dbname'] , $config['db']['username'] , $config['db']['password']);
end of connection.php
if (isset($_POST['username']) && isset($_POST['password']))
{
require_once 'Connection.php';
$user = $_POST['username'];
$pass = $_POST['password'];
$sth = $db->prepare('SELECT `username` , `password` from `library` where `username` = ? And `password` = ? ');
$sth->bindParam(1, $user);
$sth->bindParam(2, $pass);
$sth->execute();
if($sth->fetchColumn() > 0) {
echo $user;
} else {
echo 'false';
}
}
我在做错了什么?例如,为用户发送病毒,为密码发送123。哪个存在于我的库中,它返回false。
答案 0 :(得分:2)
不要对列名称使用分隔符:
SELECT username, password FROM `library` WHERE username = ? AND password = ?
您的if
测试也是错误的。 PDOStatement::fetchColumn
永远不会返回整数值,因此您需要更改:
if($sth->fetchColumn() > 0) {
为:
if($sth->fetchColumn() != false) {