php – HTML表单插入MYSQL
发布时间:2020-12-13 17:30:30 所属栏目:PHP教程 来源:网络整理
导读:好的,对于所有 PHP / MYSQL专家来说,这可能非常简单,但我只是在学习,而且我遇到了障碍.我在HTML中创建了一个注册表单,我希望用PHP在MSQL数据库中插入用户输入信息. 这是我的表格: form action="" method="post"pFirst Name: brinput type="text" name="user
好的,对于所有
PHP / MYSQL专家来说,这可能非常简单,但我只是在学习,而且我遇到了障碍.我在HTML中创建了一个注册表单,我希望用PHP在MSQL数据库中插入用户输入信息.
这是我的表格: <form action="" method="post"> <p>First Name: <br><input type="text" name="user_firstname" size="25 maxlength="25"/</p> <p>Last Name: <br><input type="text" name="user_lastname" size="25" maxlength="25" /></p> <p>Email Address: <br><input type="email" id="email" name="user_email" size="25" maxlength="40"/><p> <p>Create a Password: <br><input type="password" name="user_password" size="25" maxlength="40"/></p> <p><br><input type="submit" value="register"/></p> </form> 这是我的PHP代码: $host = "localhost"; $user = "root"; $password = ""; $database = "listings_db"; $tbl_name = "users" $link = mysqli_connect($host,$user,$password,$database) or die("Error " . mysqli_error($link)); if (isset($_POST['user_firstname'],$_POST['user_lastname'],$_POST['user_email'],$_POST['user_password'],$_POST['user_type'])) { $firstname = $_POST['user_firstname']; $lastname = $_POST['user_lastname']; $email = $_POST['user_email']; $password = $_POST['user_password']; $type = $_POST['user_type']; $errors = array(); if(empty($firstname) || empty($lastname) || empty($email) || empty($email) || empty($password) || empty($type)) {$errors [] = '*All fields are required!';} else { if(filter_var($email,FILTER_VALIDATE_EMAIL) === false) {$errors[] = '*The email address you entered is not valid!' ;} if(strlen($firstname) > 25) {$errors[] = '*The email address you entered contains too many characters!';} if(strlen($lastname) > 25) {$errors[] = '*The first name you entered contains too many characters!';} if(strlen($email) > 40) {$errors[] = '*The last name you entered contains too many characters!';} if(strlen($password) > 40) {$errors[] = '*The password you entered contains too many characters!';} if(strlen($type) != true){$errors[] = '*Please select an account type!';} } $firstname1 = mysqli_real_escape_string($firstname); $lastname1 = mysqli_real_escape_string($lastname); $email1 = mysqli_real_escape_string($email); $password1 = mysqli_real_escape_string($password); $query = mysqli_query($link,"INSERT INTO users (user_id,user_firstname,user_lastname,user_email,user_password) VALUES ('','$firstname','$lastname','$email','$password')"); } 我的代码出了什么问题?在此先感谢您的帮助! 解决方法
如果你是PHP / MySQL的新手,你真的不应该开始使用程序风格,因为它很笨,真的不推荐.如果您现在掌握OOP(面向对象编程),它将为您节省长期的麻烦!
例: mysqli_connect($host,$database) or die("Error " . mysqli_error($link)); 应该成为 $conn = new mysqli($host,$database); // check connection if ($conn->connect_error) { trigger_error('Database connection failed: ' . $conn->connect_error,E_USER_ERROR); } 和 $firstname1 = mysqli_real_escape_string($firstname); 至 $firstname1 = $conn->real_escape_string($firstname); 当你使用OOP编写高级PHP(即类等)时,已经在那个面条中了! 无论如何,你有这个问题: 你错过了结束>来自你的第一个表单元素 <p>First Name: <br><input type="text" name="user_firstname" size="25 maxlength="25"/></p> 2.您还请求了尚未设置为表单元素的发布数据“user_type” 3你已经为变量添加了1,这不是必需的(并且你没有将1添加到查询中,理想情况下你应该重命名它们以使它们合乎逻辑) $firstname1 = mysqli_real_escape_string($firstname); $lastname1 = mysqli_real_escape_string($lastname); $email1 = mysqli_real_escape_string($email); $password1 = mysqli_real_escape_string($password); 应该改为 $firstname_escaped = mysqli_real_escape_string($firstname); $lastname_escaped = mysqli_real_escape_string($lastname); $email_escaped = mysqli_real_escape_string($email); $password_escaped = mysqli_real_escape_string($password); 4您不需要INSERT列(应设置为自动增量),因为它会自动执行 $query = mysqli_query($link,'$password')"); 应该 $query = mysqli_query($link,"INSERT INTO users (user_firstname,user_password) VALUES ('$firstname','$password')"); 五 $password = md5($_POST['user_password']); //added md5 encryption 虽然强烈建议使用PHPass library,因为它使用PHP的crypt()功能,而不必解决所有令人头疼的问题! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |