脚本宝典收集整理的这篇文章主要介绍了提交表单,mysql和php,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我是PHP和sql以及所有这些东西的新手,我正在关于PHP的论坛上关于youtube的教程,并想知道为什么这段代码在提交表单时没有回应“成功”.我也想知道为什么它在我提交表格之前就会回复失败.我已成功连接到数据库.
<!DOCTYPE HTML>
<html>
<head>
<tITle>Register</title>
</head>
<body>
<form action="register.PHP" 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 = MysqL_query("INSERT INTO users ('id', 'username', 'password', 'email') VALUES('', '".$username."', '".$password."', '".$email."')")){
echo "Success";
}else{
echo "Failure" . MysqL_error();
}
}
?>
Connect.PHP
<?PHP
$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!");
?>
解决方法:
这里有一些问题.
您在列中使用了错误的identifiers(并且是引号):
('id', 'username', 'password', 'email')
删除它们
(id, username, password, email)
或使用反引号
(`id`, `username`, `password`, `email`)
>您将MysqL API与MysqLi_混合连接,然后在查询中混合使用MysqL_.
这两种不同的API不会相互混合.
使用MysqLi_ exclusive并将您当前的查询更改为:
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 injection开放.使用mysqli
with prepared statements或PDO with prepared statements,它们更安全.
我注意到你可能用纯文本存储密码.如果是这种情况,则非常气馁.
我建议你使用CRYPT_BLOWFISH或PHP 5.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));
> http://php.net/manual/en/function.mysqli-connect.php
所以在你的情况下:
$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);
}
}
?>
以上是脚本宝典为你收集整理的提交表单,mysql和php全部内容,希望文章能够帮你解决提交表单,mysql和php所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。