我想爲類的項目測試一個簡單的用戶帳戶註冊頁面,並且我正在嘗試創建一個檢查,通知用戶他們的電子郵件是否已經在數據庫中,因此不會再添加到它。這是我的PHP代碼。如何檢查用戶是否已經存在於SQL數據庫中?
<?php
$collegeid = mysql_real_escape_string('1');
$email = mysql_real_escape_string('[email protected]');
$password = mysql_real_escape_string(md5('test1'));
$name = mysql_real_escape_string('Test Test');
$bday = mysql_real_escape_string('1900-01-01');
$class = mysql_real_escape_string('Freshman');
//echo "<p>Test</p>";
$servername = "localhost";
$username = redacted;
$serverpassword = redacted;
$dbname = redacted;
$conn = new mysqli($servername, $username, $serverpassword, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$checkquery = "SELECT * FROM Student WHERE Email = '$email'";
$insertquery = "INSERT INTO Student (CollegeID, Name, Birthday, Email, Classification, Password) VALUES ('$collegeid', '$name', '$bday', '$email', '$class', '$password')";
if (mysql_num_rows($conn->query($checkquery)) > 0)
{
echo "Error: Email already in use";
}
else
{
$conn->query($insertquery);
echo "Account Created.";
}
?>
但是,無論用戶是否在數據庫中,它總是會告訴我帳號已創建。
確定查詢成功,你通常會檢查爲好。 – adeneo
請[停止使用'mysql_ *'函數](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)。他們不再被維護,並[正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。瞭解[準備的陳述](http://en.wikipedia.org/wiki/Prepared_statement),並使用[PDO](http://jayblanchard.net/demystifying_php_pdo.html)。 –
你的代碼是怎麼回事?你用mysql_設置的轉義字符串,使用mysql_num_rows函數,但使用mysqli?它到處都是。使用mysqli準備的語句和適當的mysqli函數。 – Devon