【发布时间】:2011-08-04 21:33:05
【问题描述】:
我得到的错误:无论我尝试使用有效的用户名还是密码,它总是说“对不起,用户名已经存在”。我的逻辑有问题,特别是这个代码块:
$q = $conn->query("SELECT uname FROM Student WHERE uname= $aRegUsr ");
$stmt = $conn->prepare($q);
$stmt->fetch($q);
if($stmt > 0){ #if there are 1 or more users with enter username, deny.
dbcred.php
<?php
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'databasename';
?>
PHP:
<?php
#Login Details
require_once('dbcred.php');
$conn = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
$aRegUsr = $_POST['regduser'];
#Check for Existing User
$q = $conn->query("SELECT uname FROM Student WHERE uname= $aRegUsr ");
$stmt = $conn->prepare($q);
$stmt->fetch($q);
if($stmt > 0){ #if find that username in use, deny ability to register, else{ALLOW}
echo "Sorry, username already exists";
}
else{
echo "Success";
}
?>
HTML
<form action="inc/check_regUsr.php" method="post" id="userLogon">
<div class="field required">
Username: <input type="text" name="regduser" tabindex="1" /><br />
</div>
<div class="field required">
Password: <input type="password" name="regdpass" tabindex="2" /><br />
</div>
<input type="submit" name="submitUser" />
</form>
数据库表:Student
【问题讨论】:
-
"SELECT uname FROM Student WHERE uname= $aRegUsr" -- 你不需要在 $aRegUser 周围加上单引号吗? SELECT uname FROM Student WHERE uname= '$aRegUsr' 例如?
-
$stmt 是一个对象。它总是大于 0。
标签: php mysql login login-script