ここにはいくつか間違っていることがあります。
間違った
('id', 'username', 'password', 'email')
それらを削除します
(id, username, password, email)
またはバックティックを使用する
(`id`, `username`, `password`, `email`)
mysql_error()
エラーが発生するはずですが、次の理由で発生しませんでした:
- MySQLAPIを
mysqli_
と混合しています 接続するには、mysql_
クエリで。
これらの2つの異なるAPIは互いに混ざり合いません。
mysqli_
を使用する 排他的に、現在のクエリを次のように変更します:
if($query = mysqli_query($connect, "INSERT...
mysql_error()
を変更します mysqli_error($connect)
へ
そのブロックの書き直しとして:
if(isset($_POST["submit"])){
if($query = mysqli_query($connect,"INSERT INTO users ('id', 'username', 'password', 'email') VALUES('', '".$username."', '".$password."', '".$email."')")){
echo "Success";
}else{
echo "Failure" . mysqli_error($connect);
}
}
エラーをテストするためだけに 列の周りの引用符を現在の状態に保ちながら、上記で概説したように変更を加えます。次に、MySQLがスローするエラーが表示されます。次に、上記で概説したように実行して、列名の前後の引用符を削除するか、バッククォートに置き換えます。
あなたが見たチュートリアルは、バックティックを非常によく使用しているかもしれませんが、それらが実際にバックティックであり、一重引用符ではないことを伝えるにはおそらく十分に区別できませんでした。
ただし、現在のコードはSQLインジェクションに公開されています。
。 mysqli
を使用します プリペアドステートメント付き
、またはプリペアドステートメントを使用したPDO
、はるかに安全です 。
パスワードをプレーンテキストで保存している可能性があることに気づきました。この場合、お勧めできません。
CRYPT_BLOWFISHを使用することをお勧めします
またはPHP5.5のpassword_hash()
関数。 PHP <5.5の場合は、 password_hash() compatibility pack
を使用します。
。
また、行う代わりに:
$connect = mysqli_connect("localhost", "root", "") or die("Could not connect to server!");
mysqli_select_db($connect, "php_forum") or die("Could not connect to database!");
マニュアルに記載されているように、代わりにエラーをチェックする必要があります
$link = mysqli_connect("myhost","myuser","mypassw","mybd")
or die("Error " . mysqli_error($link));
だからあなたの場合:
$connect = mysqli_connect("localhost", "root", "","php_forum")
or die("Error " . mysqli_error($connect));
編集: action="register.php"
を変更しました action=""
へ 同じページ内でコード全体を使用しているためです。
<!DOCTYPE HTML>
<html>
<head>
<title>Register</title>
</head>
<body>
<form action="" method="POST">
Username: <input type="text" name="username">
<br/>
Password: <input type="password" name="password">
<br/>
Confirm Password: <input type="password" name="confirmPassword">
<br/>
Email: <input type="text" name="email">
<br/>
<input type="submit" name="submit" value="Register"> or <a href="login.php">Log in</a>
</form>
</body>
</html>
<?php
require('connect.php');
$username = $_POST['username'];
$password = $_POST['password'];
$confirmPassword = $_POST['confirmPassword'];
$email = $_POST['email'];
if(isset($_POST["submit"])){
if($query = mysqli_query($connect,"INSERT INTO users (`id`, `username`, `password`, `email`) VALUES ('', '".$username."', '".$password."', '".$email."')")){
echo "Success";
}else{
echo "Failure" . mysqli_error($connect);
}
}
?>