继续我之前的2个帖子' PHP and MYSQL database connection and table creation only once'和' Undefined variable in php registration from',在我使用下面的代码将POSTED数据插入我的数据库之前,我没有任何错误。由于我是MYSQLI的新手,我无法理解我的错误并对其进行调试。 PLZ帮助..
//code for input field validation
if (!empty($error)) //send to Database if there's no error '
{
$query = $mysqli->prepare("INSERT INTO users ( Name, Username, Password, Email) VALUES (?, ?, ?, ?, ?)");
$query ->bind_param('sssdi',$fullname, $username, $password2, $email);
$stmt->execute();
$newId = $stmt->insert_id;
$stmt->close();
//$mysqli->query($query);
$result = @mysqli_query($query);
if (!$result) {
$error['ack'] = 'Failed to Register Your Account...!';
} else {
$error['ack2'] = 'Account Registered Successfully...!';
}
//$mysqli->close();//Close the DB Connection
我的REGISTRATION.PHP表单位于&{39; Undefined variable in php registration from'链接。
这是我的完整代码 会员ID)); &#34 ;; mysql_select_db(' USERS&#39); $ retval = mysql_query($ sql,$ connect); if(!$ retval){ 死('不能创建表\ n:' .mysql_error()); } ; mysql_close($连接); // DB_connection的结尾
$fullname = "";
$username = "";
$password = "";
$password2 = "";
$email = "";
if (isset($_POST['submit'])) {
session_start();
$error = array(); //Declare an array to store error messages
//validation for fullname
if (!empty($_POST['fullname'])) {
$fullname = mysql_real_escape_string(trim($_POST['fullname']));
} else {
$error['fullname'] = 'Enter Fullname...';
}
//validation for username
if (!empty($_POST['username'])){
$username = mysql_real_escape_string(trim($_POST['username']));
} else {
$error['username'] = 'Enter Username...';
}
//Validation for password and confirm password
if (!empty($_POST['password'])) {
if ($_POST['password'] != $_POST['password2']) {
$error['password2'] = 'Passwords do not match...';
} else {
$password2 = mysql_real_escape_string($_POST['password']);
}
} else {
$error['password'] = 'Enter Password...';
}
//validation for e-mail
if (!empty($_POST['email'])) {
$email = mysql_real_escape_string($_POST['email']);
} else {
$error['email'] = 'Enter your Email...';
}
if (!empty($error)) //send to Database if there's no error '
{
$query = $mysqli->prepare("INSERT INTO users ( Name, Username, Password, Email) VALUES (?, ?, ?, ?, ?)");
$query ->bind_param('sssdi',$fullname, $username, $password2, $email);
$stmt->execute();
$newId = $stmt->insert_id;
$stmt->close();
//$mysqli->query($query);
$result = @mysqli_query($query);
if (!$result) {
$error['ack'] = 'Failed to Register Your Account...!';
} else {
$error['ack2'] = 'Account Registered Successfully...!';
}
}//end of main if
?>
<html>
<form action="register.php" method="post" id="user_registration">
<p id="head">Create Account</p>
<input type="text" id="fullname" name="fullname"/>
**<span class="error" id="fullname"><?php echo $error_name; ?></span>**
<input type="text" id="username" name="username"/>
<span id="availability_status"></span>
**<span class="error" id="username"><?php echo $error_username; ?></span>**
<input type="password" id="password" name="password"/>
**<span class="error" id="password"><?php echo $error_password; ?></span>**
<input type="password" id="password2" name="password2"/>
**<span class="error" id="divCheckPasswordMatch"><?php echo $error_password2;?></span>**
<input type="email" id="email" name="email"/>
**<span class="error" id="email"><?php echo $error_email; ?></span>**
<p class="submit">
<button type="submit"id="submit" name="submit" value="Register”>Register</button>
</p>
答案 0 :(得分:1)
您的查询的问题是值不匹配。如果你看它,你只插入4个值,但你有5个? 5个值。当你绑定参数“sssdi”代表5时你重复那个错误。所以要么你忘了把一个变量放进去或只是删除额外的它应该没问题。据我所知,所有4个变量应该是字符串,因此将其更改为下面的查询应该有效。
$query = $mysqli->prepare("INSERT INTO users ( Name, Username, Password, Email) VALUES (?, ?, ?, ?)");
$query ->bind_param('ssss',$fullname, $username, $password2, $email);
$stmt->execute();
答案 1 :(得分:0)
更改您的代码
$query = $mysqli->prepare("INSERT INTO users (Name, Username, Password, Email) VALUES (?, ?, ?, ?)");
$query->bind_param("ssss", $fullname, $username, $password2, $email);
$query->execute();
还要仔细检查您的字段名称是否带有第一个大写字母,如果是,则根据您的表格更改字段名称。