Há algumas coisas erradas aqui.
Você está usando os identificadores errados> para suas colunas em (e sendo aspas):
('id', 'username', 'password', 'email')
Remova eles
(id, username, password, email)
ou use backticks
(`id`, `username`, `password`, `email`)
mysql_error()
deveria ter gerado um erro, mas não aconteceu por causa de:- Você está misturando APIs MySQL com
mysqli_
para se conectar, entãomysql_
em sua consulta.
Essas duas APIs diferentes não se misturam.
Use
mysqli_
exclusivamente e altere sua consulta atual para:if($query = mysqli_query($connect, "INSERT...
e altere
mysql_error()
para mysqli_error($connect)
como uma reescrita para esse bloco:
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);
}
}
Só para testar o erro, faça as alterações conforme descrevi acima, mantendo as aspas em torno de suas colunas do jeito que você tem agora. Você verá então o erro que o MySQL lançará. Você pode fazer como já descrevi acima e remover as aspas em torno dos nomes das colunas ou substituí-las por acentos graves.
O tutorial que você viu pode muito bem usar acentos graves, mas provavelmente não eram distinguíveis o suficiente para você dizer que eles eram realmente acentos graves e não aspas simples.
No entanto, seu código atual está aberto para injeção de SQL . Use
mysqli
com declarações preparadas
, ou PDO com declarações preparadas
, são muito mais seguros . Percebi que você pode estar armazenando senhas em texto simples. Se este for o caso, é altamente desencorajado.
Eu recomendo que você use CRYPT_BLOWFISH ou
password_hash()
do PHP 5.5
função. Para PHP <5.5, use o password_hash() compatibility pack
. Além disso, em vez de fazer:
$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!");
Em vez disso, você deve verificar se há erros, assim como o manual afirma
$link = mysqli_connect("myhost","myuser","mypassw","mybd")
or die("Error " . mysqli_error($link));
Então no seu caso:
$connect = mysqli_connect("localhost", "root", "","php_forum")
or die("Error " . mysqli_error($connect));
Editar: e alterei
action="register.php"
para action=""
já que você está usando o código inteiro dentro da mesma página. <!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);
}
}
?>