我相信你仍然在學習PHP MySQL的過程。我給你的建議是停止本教程(S),你是目前使用mysqli或pdo開始學習準備好的語句,即使你在本地機器上練習,也不要以純文本存儲密碼,它更好地開始學習從單詞去做事情的正確方法..
PHP有驚人的功能來散列和保護你的密碼,password_hash() and password_verify()
您與mysqli的代碼編寫應該像
<?php
$servername = "localhost";
$username = "user";
$password = "password";
$hash = password_hash($password,PASSWORD_DEFAULT);
$dbname = "database";
$name ="test2";
$email="1234";
$password ="1234";
$hash=password_hash($password,PASSWORD_DEFAULT);
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// prepare and bind
$stmt = $conn->prepare("INSERT INTO android (name,email,password) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $name, $email, $hash);
$stmt->execute();
echo "New records created successfully";
$stmt->close();
$conn->close();
?>
你的錯誤是在電子郵件中你使你的表的主鍵重複,所以因此你需要檢查,如果該在插入之前,電子郵件不存在。
你正確的代碼應該是這樣的:
<?
$sql = $con->prepare("SELECT email from android WHERE email = ? LIMIT 1");
$sql->bind_param('s', $email);
$sql->execute();
$sql->bind_result($email);
$sql->store_result();
if ($sql->num_rows == 1) //row exists
{
if ($sql->fetch()) //contents of the row
{
echo $email . "already registered";
}
} else {
//email does not exist lets insert
// prepare and bind
$sql = $conn->prepare("INSERT INTO android (name,email,password) VALUES (?, ?, ?)");
$sql->bind_param("sss", $name, $email, $password);
$sql->execute();
echo "New records created successfully";
$sql->close();
$conn->close();
}
?>
和你的數據庫連接和您的查詢exection是哪裏? – donald123
嘗試打印您的'$ sql'變量 –
和db架構。 –