Php 无法将用户注册详细信息插入数据库
我不能在注册后将用户插入数据库,我已经做了所有我能做的,但没有成功,我真的需要在这里提供帮助,请我想知道我的脚本中哪里做错了 这是我的注册html脚本:Php 无法将用户注册详细信息插入数据库,php,Php,我不能在注册后将用户插入数据库,我已经做了所有我能做的,但没有成功,我真的需要在这里提供帮助,请我想知道我的脚本中哪里做错了 这是我的注册html脚本: <span class='details' ><h1><bold>ENTER YOUR DETAILS HERE</bold></h1></span> <form action="trotle.php" method="POST">
<span class='details' ><h1><bold>ENTER YOUR DETAILS HERE</bold></h1></span>
<form action="trotle.php" method="POST">
<div class="form-group" style="margin-left:50px;color:#000099; font-family:times;">
<input type="hidden" class="form-control" name="id" placeholder="enter your id" required />
</div><br>
<div class="form-group" style="margin-left:50px;color:#000099; font-family:times;">
<label>fullname</label>
<input type="text" class="form-control" name="fullname" placeholder="Enter your fullname" required />
</div><br>
<div class="form-group" style="margin-left:50px;color:#000099; font-family:times;">
<label>username</label>
<input type="username" class="form-control" name="username" placeholder="Enter your username" required />
</div><br>
<div class="form-group" >
<label>password</label>
<input type="password" class="form-control" name="password" placeholder="type in your password" required />
</div>
<br>
<div class="form-group" style="margin-left:50px;color:#000099; font-family:times;" />
<label>email</label>
<input type="email" class="form-control" name="email" placeholder="Enter your email" required />
</div><br>
<div class="form-group" style="margin-left:50px;color:#000099; font-family:times;">
<label>country</label>
<input type="text" class="form-control" name="country" placeholder="Enter your country" required />
</div><br>
<div class="form-group" style="margin-left:50px;color:#000099; font-family:times;">
<label>phone number</label>
<input type="number" class="form-control" name="phonenumber" placeholder="Enter your phonenumber" required />
</div><br>
<div class="form-group" style="margin-left:50px;color:#000099; font-family:times;">
<label>Alternative phone number</label>
<input type="number" class="form-control" name="alternativephonenumber" placeholder="Enter your alternative phonenumber" required />
</div><br>
<div class="form-group" style="margin-left:50px;color:#000099; font-family:times;">
<label>referrer</label>
<input type="text" class="form-control" name="referrer" placeholder="type in who referred you here" required />
</div><br>
<div class="form-group" style="margin-left:50px;color:#000099; font-family:times;"">
<label>paymentmode</label>
<select name="paymentmode" class="form-control" required />
<option value="">Select your paymentmode</option>
<option value="bitcoin">bitcoin</option>
<option value="perfectmoney">perfectmoney</option>
<option value="naira">naira</option>
</select>
</div>
<br>
<div class="form-group" style='text-align: center;padding-top: 30px;'>
<input type="checkbox" style=" vertical-align: sub; margin-left: 120px;margin-bottom: -15px; " required><a href="homepage.php"> I agree with </a><a href='../terms' target="_blank">Terms and conditions</a><br>
<input type="submit" class="btn btn-success" name="submit_signup" value='REGISTER' style="margin-left:145px;border:none; margin-bottom: -10px; background-color: green; font-weight: bold;border-style: dotted;">
<a href="trotle.php"><input type="post" class="btn btn-success" value='LOGIN' style="margin-left:140px;background-color: green; font-weight: bold;border-style: dotted; border-color:black ;padding: 5px; size:20px; margin-bottom:-10px;"></a>
</div>
<br>
<?php
?>
</form>
在此处输入您的详细信息
全名
用户名
密码
电子邮件
国家
电话号码
备用电话号码
推荐人
像这样更改PHP脚本并尝试,如果没有得到错误,可能是验证错误
$id=$fullname=$username=$password=$email=$country= $phonenumber=$alternativephonenumber=$referrer=$paymentmode="";
if(isset($_POST['submit_signup'])) //simplified validation
{
if(isset($_POST['id'])){
$id= $_POST['id'];
}
if(isset($_POST['fullname'])){
$fullname= $_POST['fullname'];
}
else{
echo 'please enter your fullname';
}
if(isset($_POST['username'])){
$username= $_POST['username'];
}
else{
echo 'enter your username';
}
if(isset($_POST['password'])){
$password= $_POST['password'];
}
else{
echo 'enter your password';
}
if(isset($_POST['email'])){
$email= $_POST['email'];
}
else{
echo 'enter your email';
}
if(isset($_POST['country'])){
$country= $_POST['country'];
}
else{
echo 'enter your country';
}
if(isset($_POST['phonenumber'])){
$phonenumber= $_POST['phonenumber'];
}
else{
echo 'enter your phonenumber';
}
if(isset($_POST['alternativephonenumber'])){
$alternativephonenumber= $_POST['alternativephonenumber'];
}
else{
echo 'enter your alternativephonenumber';
}
if(isset($_POST['referrer'])){
$referrer= $_POST['referrer'];
}
else{
echo 'enter your referrer';
}
if(isset($_POST['paymentmode'])){
$paymentmode= $_POST['paymentmode'];
}
else{var_dump($_POST['id']);
echo 'enter your paymentmode';
}
}
else {
echo 'nah';
}
$serverhost='localhost';
$serverdb='charles';
$serveruser='root';
$serverpassword='';
try{
$connect= new PDO("mysql:host=$serverhost;dbname=$serverdb;" , $serveruser, $serverpassword);
$connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch( PDOException $e)
{
echo $e->getmessage();
}
if($connect){
echo 'database successful!';
}
$sql="INSERT INTO users(id, fullname, username, password, email, country, phonenumber, alternativephonenumber, referrer, paymentmode)VALUES(:id, :fullname, :username, :password, :email, :country, :phonenumber, :alternativephonenumber, :referrer, :paymentmode)";
$query=$connect->prepare($sql);
$query->bindParam(':id', $id, PDO::PARAM_INT);
$query->bindParam(':fullname', $fullname, PDO::PARAM_STR);
$query->bindParam(':username', $username, PDO::PARAM_STR);
$query->bindParam(':password', $password, PDO::PARAM_STR);
$query->bindParam(':email', $email, PDO::PARAM_STR);
$query->bindParam(':country', $country, PDO::PARAM_STR);
$query->bindParam(':phonenumber', $phonenumber, PDO::PARAM_INT);
$query->bindParam(':alternativephonenumber', $alternativephonenumber, PDO::PARAM_INT);
$query->bindParam(':referrer', $referrer, PDO::PARAM_STR);
$query->bindParam(':paymentmode', $paymentmode, PDO::PARAM_STR);
$query->execute();
所作的修改:
简化了验证
删除了不必要的变量赋值,如果您使用的是isset
,则不要将其赋值到isset
使用数据库名称的变量更新数据库名称
最后一个建议是,如果要回显验证错误以进行测试,则可以,否则请保留一个变量并将其回显到正确的位置。并将插入查询代码块放入验证中。使用css,使用类、ID或父>子选择器等指定样式,而不是不可管理的内联样式
DIV元素不使用标记末尾的/
(请参阅原始代码中的电子邮件部分)
没有输入类型POST
(
)-可能一个按钮会更好
id
字段隐藏在HTML中,但db可能为此使用了一个自动增量
字段(主键),因此无需发送此值-用户在提交表单之前不会知道这一点,也不会阻止他们使用任何可能需要的数字
<style>
.form-group{margin-left:50px;color:#000099; font-family:times;}
.form-control{}
input[type='checkbox']{vertical-align: sub; margin-left: 120px;margin-bottom: -15px;}
input[type='submit']{margin-left:145px;border:none; margin-bottom: -10px; background-color: green; font-weight: bold;border-style: dotted;}
input[type='button']{margin-left:140px;background-color: green; font-weight: bold;border-style: dotted; border-color:black ;padding: 5px; size:20px; margin-bottom:-10px;}
</style>
<span class='details' >
<h1>
<bold>ENTER YOUR DETAILS HERE</bold>
</h1>
</span>
<form action='trotle.php' method='POST'>
<!-- HOW does a user enter a value here if it is HIDDEN??? Removed `required` attribute -->
<div class='form-group'>
<input type='hidden' class='form-control' name='id' placeholder='enter your id' />
</div>
<br>
<div class='form-group'>
<label>fullname</label>
<input type='text' class='form-control' name='fullname' placeholder='Enter your fullname' required />
</div>
<br>
<div class='form-group'>
<label>username</label>
<input type='username' class='form-control' name='username' placeholder='Enter your username' required />
</div>
<br>
<div class='form-group' >
<label>password</label>
<input type='password' class='form-control' name='password' placeholder='type in your password' required />
</div>
<br>
<div class='form-group'>
<label>email</label>
<input type='email' class='form-control' name='email' placeholder='Enter your email' required />
</div>
<br>
<div class='form-group'>
<label>country</label>
<input type='text' class='form-control' name='country' placeholder='Enter your country' required />
</div>
<br>
<div class='form-group'>
<label>phone number</label>
<input type='number' class='form-control' name='phonenumber' placeholder='Enter your phonenumber' required />
</div>
<br>
<div class='form-group'>
<label>Alternative phone number</label>
<input type='number' class='form-control' name='alternativephonenumber' placeholder='Enter your alternative phonenumber' required />
</div>
<br>
<div class='form-group'>
<label>referrer</label>
<input type='text' class='form-control' name='referrer' placeholder='type in who referred you here' required />
</div>
<br>
<div class='form-group'>
<label>paymentmode</label>
<select name='paymentmode' class='form-control' required />
<option value=''>Select your paymentmode</option>
<option value='bitcoin'>bitcoin</option>
<option value='perfectmoney'>perfectmoney</option>
<option value='naira'>naira</option>
</select>
</div>
<br>
<div class='form-group'>
<!-- this checkbox needs a name!! Assign name `terms` -->
<input type='checkbox' name='terms' required />
<a href='homepage.php'> I agree with </a><a href='../terms' target='_blank'>Terms and conditions</a>
<br>
<input type='submit' class='btn btn-success' name='submit_signup' value='REGISTER' />
<a href='trotle.php'>
<input type='button' class='btn btn-success' value='LOGIN' />
</a>
</div>
<br>
</form>
<?php
if( $_SERVER['REQUEST_METHOD']=='POST' && isset( $_POST['submit_signup'] ) ){
/* id should be an auto-increment field in the db */
$id = isset( $_POST['id'] ) ? $_POST['id'] : false;
$fullname = isset( $_POST['fullname'] ) ? $_POST['fullname'] : false;
$username = isset( $_POST['username'] ) ? $_POST['username'] : false;
$password = isset( $_POST['password'] ) ? $_POST['password'] : false;
$email = isset( $_POST['email'] ) ? $_POST['email'] : false;
$country = isset( $_POST['country'] ) ? $_POST['country'] : false;
$phonenumber = isset( $_POST['phonenumber'] ) ? $_POST['phonenumber'] : false;
$alternativephonenumber = isset( $_POST['alternativephonenumber'] ) ? $_POST['alternativephonenumber'] : false;
$referrer = isset( $_POST['referrer'] ) ? $_POST['referrer'] : false;
$paymentmode = isset( $_POST['paymentmode'] ) ? $_POST['paymentmode'] : false;
$errors=array();
if( !$fullname )$errors[]='please enter your fullname';
if( !$username )$errors[]='enter your username';
if( !$password )$errors[]='enter your password';
if( !$email )$errors[]='enter your email';
if( !$country )$errors[]='enter your country';
if( !$phonenumber )$errors[]='enter your phonenumber';
if( !$alternativephonenumber )$errors[]='enter your alternativephonenumber';
if( !$referrer )$errors[]='enter your referrer';
if( !$paymentmode )$errors[]='enter your paymentmode';
if( !empty( $errors ) ){
/* display any errors with form submission */
foreach( $errors as $error ){
echo $error . '<br />';
}
} else {
try{
$serverhost='localhost';
$serverdb='charles';
$serveruser='root';
$serverpassword='';
$connect=new PDO("mysql:host={$serverhost};dbname={$serverdb};" , $serveruser, $serverpassword);
$connect->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
if( $connect ){
$sql="insert into `users`
( `fullname`, `username`, `password`, `email`, `country`, `phonenumber`, `alternativephonenumber`, `referrer`, `paymentmode` )
values
( :fullname, :username, :password, :email, :country, :phonenumber, :alternativephonenumber, :referrer, :paymentmode )";
$stmt=$connect->prepare( $sql );
if( $stmt ){
$stmt->bindParam(':fullname', $fullname, PDO::PARAM_STR);
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->bindParam(':password', $password, PDO::PARAM_STR);
$stmt->bindParam(':email', $email, PDO::PARAM_STR);
$stmt->bindParam(':country', $country, PDO::PARAM_STR);
$stmt->bindParam(':phonenumber', $phonenumber );
$stmt->bindParam(':alternativephonenumber', $alternativephonenumber );
$stmt->bindParam(':referrer', $referrer, PDO::PARAM_STR);
$stmt->bindParam(':paymentmode', $paymentmode, PDO::PARAM_STR);
$result = $stmt->execute();
echo $result ? 'success' : 'fail';
}
}
} catch( PDOException $e ) {
echo $e->getMessage();
}
}
}
?>
.form组{左边距:50px;颜色:#000099;字体系列:times;}
.form控件{}
输入[type='checkbox']{垂直对齐:子;左侧边距:120px;底部边距:-15px;}
输入[type='submit']{左边距:145px;边框:无;边框底部:-10px;背景色:绿色;字体粗体;边框样式:虚线;}
输入[type='button']{左边距:140px;背景色:绿色;字体粗体;边框样式:虚线;边框颜色:黑色;填充:5px;大小:20px;边距底部:-10px;}
在此处输入您的详细信息
全名
用户名
密码
电子邮件
国家
电话号码
备用电话号码
推荐人
付款方式
选择您的付款方式
比特币
完美货币
奈拉
执行时有错误吗?id
字段是隐藏的,因此用户如何输入值?@kuru,执行时没有错误execution@RamRaider,id字段不是由用户输入的,请记住数据库更新id由自己完成我已经完成了您建议的所有操作,但仍然没有插入到数据库中,我真的很困惑,如果您使用id作为自动增量,请从插入查询中删除其他事件和trythanks@Ramraider以获得您的帮助,但仍然没有插入,尽管它显示了一条成功消息,但没有插入用户,我下一步将做什么,我想弄清楚这一点,并知道它不,它显示的消息是'成功',正如您在脚本中指出的,如果它成功了,但没有insertionI只是为上述设置了一个完整的端到端测试(只进行了一些小的编辑以适应数据库),它工作得很好。多亏了大家,我已经解决了这个问题,我现在可以将用户插入到我的数据库中,非常感谢@RamRaider为我提供了详细的帮助。爱你的家伙谢谢大家,我已经解决了这个问题,我现在可以将用户插入我的数据库,特别感谢@RamRaider为我提供了详细的帮助。我爱你们
<style>
.form-group{margin-left:50px;color:#000099; font-family:times;}
.form-control{}
input[type='checkbox']{vertical-align: sub; margin-left: 120px;margin-bottom: -15px;}
input[type='submit']{margin-left:145px;border:none; margin-bottom: -10px; background-color: green; font-weight: bold;border-style: dotted;}
input[type='button']{margin-left:140px;background-color: green; font-weight: bold;border-style: dotted; border-color:black ;padding: 5px; size:20px; margin-bottom:-10px;}
</style>
<span class='details' >
<h1>
<bold>ENTER YOUR DETAILS HERE</bold>
</h1>
</span>
<form action='trotle.php' method='POST'>
<!-- HOW does a user enter a value here if it is HIDDEN??? Removed `required` attribute -->
<div class='form-group'>
<input type='hidden' class='form-control' name='id' placeholder='enter your id' />
</div>
<br>
<div class='form-group'>
<label>fullname</label>
<input type='text' class='form-control' name='fullname' placeholder='Enter your fullname' required />
</div>
<br>
<div class='form-group'>
<label>username</label>
<input type='username' class='form-control' name='username' placeholder='Enter your username' required />
</div>
<br>
<div class='form-group' >
<label>password</label>
<input type='password' class='form-control' name='password' placeholder='type in your password' required />
</div>
<br>
<div class='form-group'>
<label>email</label>
<input type='email' class='form-control' name='email' placeholder='Enter your email' required />
</div>
<br>
<div class='form-group'>
<label>country</label>
<input type='text' class='form-control' name='country' placeholder='Enter your country' required />
</div>
<br>
<div class='form-group'>
<label>phone number</label>
<input type='number' class='form-control' name='phonenumber' placeholder='Enter your phonenumber' required />
</div>
<br>
<div class='form-group'>
<label>Alternative phone number</label>
<input type='number' class='form-control' name='alternativephonenumber' placeholder='Enter your alternative phonenumber' required />
</div>
<br>
<div class='form-group'>
<label>referrer</label>
<input type='text' class='form-control' name='referrer' placeholder='type in who referred you here' required />
</div>
<br>
<div class='form-group'>
<label>paymentmode</label>
<select name='paymentmode' class='form-control' required />
<option value=''>Select your paymentmode</option>
<option value='bitcoin'>bitcoin</option>
<option value='perfectmoney'>perfectmoney</option>
<option value='naira'>naira</option>
</select>
</div>
<br>
<div class='form-group'>
<!-- this checkbox needs a name!! Assign name `terms` -->
<input type='checkbox' name='terms' required />
<a href='homepage.php'> I agree with </a><a href='../terms' target='_blank'>Terms and conditions</a>
<br>
<input type='submit' class='btn btn-success' name='submit_signup' value='REGISTER' />
<a href='trotle.php'>
<input type='button' class='btn btn-success' value='LOGIN' />
</a>
</div>
<br>
</form>
<?php
if( $_SERVER['REQUEST_METHOD']=='POST' && isset( $_POST['submit_signup'] ) ){
/* id should be an auto-increment field in the db */
$id = isset( $_POST['id'] ) ? $_POST['id'] : false;
$fullname = isset( $_POST['fullname'] ) ? $_POST['fullname'] : false;
$username = isset( $_POST['username'] ) ? $_POST['username'] : false;
$password = isset( $_POST['password'] ) ? $_POST['password'] : false;
$email = isset( $_POST['email'] ) ? $_POST['email'] : false;
$country = isset( $_POST['country'] ) ? $_POST['country'] : false;
$phonenumber = isset( $_POST['phonenumber'] ) ? $_POST['phonenumber'] : false;
$alternativephonenumber = isset( $_POST['alternativephonenumber'] ) ? $_POST['alternativephonenumber'] : false;
$referrer = isset( $_POST['referrer'] ) ? $_POST['referrer'] : false;
$paymentmode = isset( $_POST['paymentmode'] ) ? $_POST['paymentmode'] : false;
$errors=array();
if( !$fullname )$errors[]='please enter your fullname';
if( !$username )$errors[]='enter your username';
if( !$password )$errors[]='enter your password';
if( !$email )$errors[]='enter your email';
if( !$country )$errors[]='enter your country';
if( !$phonenumber )$errors[]='enter your phonenumber';
if( !$alternativephonenumber )$errors[]='enter your alternativephonenumber';
if( !$referrer )$errors[]='enter your referrer';
if( !$paymentmode )$errors[]='enter your paymentmode';
if( !empty( $errors ) ){
/* display any errors with form submission */
foreach( $errors as $error ){
echo $error . '<br />';
}
} else {
try{
$serverhost='localhost';
$serverdb='charles';
$serveruser='root';
$serverpassword='';
$connect=new PDO("mysql:host={$serverhost};dbname={$serverdb};" , $serveruser, $serverpassword);
$connect->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
if( $connect ){
$sql="insert into `users`
( `fullname`, `username`, `password`, `email`, `country`, `phonenumber`, `alternativephonenumber`, `referrer`, `paymentmode` )
values
( :fullname, :username, :password, :email, :country, :phonenumber, :alternativephonenumber, :referrer, :paymentmode )";
$stmt=$connect->prepare( $sql );
if( $stmt ){
$stmt->bindParam(':fullname', $fullname, PDO::PARAM_STR);
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->bindParam(':password', $password, PDO::PARAM_STR);
$stmt->bindParam(':email', $email, PDO::PARAM_STR);
$stmt->bindParam(':country', $country, PDO::PARAM_STR);
$stmt->bindParam(':phonenumber', $phonenumber );
$stmt->bindParam(':alternativephonenumber', $alternativephonenumber );
$stmt->bindParam(':referrer', $referrer, PDO::PARAM_STR);
$stmt->bindParam(':paymentmode', $paymentmode, PDO::PARAM_STR);
$result = $stmt->execute();
echo $result ? 'success' : 'fail';
}
}
} catch( PDOException $e ) {
echo $e->getMessage();
}
}
}
?>