php如何把表單內(nèi)容提交到數(shù)據(jù)庫(kù)
一般朋友們逛一些網(wǎng)站的時(shí)候,想使用網(wǎng)站或者看到更多網(wǎng)站里的內(nèi)容,網(wǎng)站會(huì)要求用戶(hù)進(jìn)行新用戶(hù)的注冊(cè),網(wǎng)站會(huì)把新用戶(hù)的注冊(cè)信息存入數(shù)據(jù)庫(kù)中,需要的時(shí)候再進(jìn)行提取。
這樣網(wǎng)站就會(huì)首先創(chuàng)建自己的數(shù)據(jù)庫(kù)和對(duì)應(yīng)的表,我們這里使用php創(chuàng)建一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)和表,使用phpMyAdmin來(lái)創(chuàng)建MySql數(shù)據(jù)庫(kù)和表。例如創(chuàng)建一個(gè)test數(shù)據(jù)庫(kù),其示例的代碼如下所示:
<?php // 創(chuàng)建連接 $conn = new mysqli("localhost", "uesename", "password"); // 檢測(cè)連接 if ($conn->connect_error) { die("連接失敗: " . $conn->connect_error);} // 創(chuàng)建數(shù)據(jù)庫(kù) $sql = "CREATE DATABASE test"; if ($conn->query($sql) === TRUE) { echo "數(shù)據(jù)庫(kù)創(chuàng)建成功"; } else { echo "Error creating database: " . $conn->error; } $conn->close(); ?>
然后使用CREATE TABLE 語(yǔ)句用于創(chuàng)建 MySQL 表,設(shè)置如下幾個(gè)字段。
- id : 它是唯一的,類(lèi)型為 int ,并選擇主鍵。
- uesrname : 用戶(hù)名,類(lèi)型為 varchar, 長(zhǎng)度為30。
- password : 密碼,類(lèi)型為 varchar, 長(zhǎng)度為30。
- confirm:確認(rèn)密碼,類(lèi)型為 varchar, 長(zhǎng)度為30。
- email : 郵箱,類(lèi)型為 varchar, 長(zhǎng)度為30。
接著使用sql語(yǔ)句來(lái)創(chuàng)建數(shù)據(jù)庫(kù)表,其代碼顯示如下:
<?php // 創(chuàng)建連接 $conn = new mysqli("localhost", "uesename", "password","test"); // 檢測(cè)連接 if ($conn->connect_error) { die("連接失敗: " . $conn->connect_error); } // 使用 sql 創(chuàng)建數(shù)據(jù)表 $sql = "CREATE TABLE login ( id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(30) NOT NULL, password VARCHAR(30) NOT NULL, confirm VARCHAR(30) NOT NULL, email VARCHAR(30) NOT NULL, )ENGINE=InnoDB DEFAULT CHARSET=utf8 "; if ($conn->query($sql) === TRUE) { echo "Table MyGuests created successfully"; } else { echo "創(chuàng)建數(shù)據(jù)表錯(cuò)誤: " . $conn->error; } $conn->close(); ?>
上面我們創(chuàng)建好了數(shù)據(jù)庫(kù)和表,下面建立一個(gè)簡(jiǎn)單的表單注冊(cè)的前端頁(yè)面,這里的表單頁(yè)面很簡(jiǎn)單,用戶(hù)名,密碼,密碼確認(rèn),注冊(cè)郵箱等等幾個(gè)簡(jiǎn)單的文本框。其代碼如下:
<!DOCTYPE html> <html> <head> <title>用戶(hù)注冊(cè)頁(yè)面</title> <meta charset="UTF-8"/> <style type="text/css"> *{margin:0px;padding:0px;} ul{ width:400px; list-style:none; margin:50px auto; } li{ padding:12px; position:relative; } label{ width:80px; display:inline-block; float:left; line-height:30px; } input[type='text'],input[type='password']{ height:30px; } img{ margin-left:10px; } input[type="submit"]{ margin-left:80px; padding:5px 10px; } </style> </head> <body> <form action="zhuce.php" method="post"> <ul> <li> <label>用戶(hù)名:</label> <input type="text" name="username" placeholder="請(qǐng)輸入注冊(cè)賬號(hào)"/> </li> <li> <label>密 碼:</label> <input type="password" name="password" placeholder="請(qǐng)輸入密碼" /> </li> <li> <label>確認(rèn)密碼:</label> <input type="password" name="confirm" placeholder="請(qǐng)?jiān)俅屋斎朊艽a" /> </li> <li> <label>郵 箱:</label> <input type="text" name="email" placeholder="請(qǐng)輸入郵箱"/> </li> <li> <input type="submit" value="注冊(cè)" /> </li> </ul> </form> </body> </html>
接下來(lái)就需要使用php代碼來(lái)實(shí)現(xiàn)新用戶(hù)提交的信息給提交到數(shù)據(jù)庫(kù),使用POST方式進(jìn)行值的傳遞和獲取。
首先需要連接前面創(chuàng)建完成的數(shù)據(jù)庫(kù)和表,因?yàn)樾掠脩?hù)注冊(cè)的用戶(hù)名,密碼等信息需要保存到表中的對(duì)應(yīng)字段里面。存入數(shù)據(jù)庫(kù)表之前先對(duì)提交的數(shù)據(jù)進(jìn)行一些判斷驗(yàn)證,比如不符合要求的用戶(hù)名,郵箱等需要有過(guò)濾和錯(cuò)誤的提示,還要防止用戶(hù)名如果被其他用戶(hù)注冊(cè),則需要提示您將不能再使用這個(gè)用戶(hù)名,這是先讀取數(shù)據(jù)庫(kù)已經(jīng)存在的用戶(hù)名,然后進(jìn)行判斷。
簡(jiǎn)單來(lái)說(shuō)就是將表單提交的數(shù)據(jù)都存入變量,然后進(jìn)行密碼和驗(yàn)證碼的判斷,都正確以后,將用戶(hù)信息存入數(shù)據(jù)庫(kù)并將數(shù)據(jù)庫(kù)存放用戶(hù)信息的表中所有數(shù)據(jù)提取打印出來(lái)。說(shuō)白了,后半句就是數(shù)據(jù)存入和提取。其具體的代碼如下所示:
<?php session_start(); header("Content-type:text/html;charset=utf-8"); $link = mysqli_connect('localhost','root','root','test'); if (!$link) { die("連接失敗:".mysqli_connect_error()); } $username = $_POST['username']; $password = $_POST['password']; $confirm = $_POST['confirm']; $email = $_POST['email']; if($username == "" || $password == "" || $confirm == "" || $email == "") { echo "<script>alert('信息不能為空!重新填寫(xiě)');window.location.href='zhuce.html'</script>"; } elseif ((strlen($username) < 3)||(!preg_match('/^\w+$/i', $username))) { echo "<script>alert('用戶(hù)名至少3位且不含非法字符!重新填寫(xiě)');window.location.href='zhuce'</script>"; //判斷用戶(hù)名長(zhǎng)度 }elseif(strlen($password) < 5){ echo "<script>alert('密碼至少5位!重新填寫(xiě)');window.location.href='zhuce.html'</script>"; //判斷密碼長(zhǎng)度 }elseif($password != $confirm) { echo "<script>alert('兩次密碼不相同!重新填寫(xiě)');window.location.href='zhuce.html'</script>"; //檢測(cè)兩次輸入密碼是否相同 } elseif (!preg_match('/^[\w\.]+@\w+\.\w+$/i', $email)) { echo "<script>alert('郵箱不合法!重新填寫(xiě)');window.location.href='zhuce.html'</script>"; //判斷郵箱格式是否合法 } elseif(mysqli_fetch_array(mysqli_query($link,"select * from login where username = '$username'"))){ echo "<script>alert('用戶(hù)名已存在');window.location.href='zhuce.html'</script>"; } else{ $sql= "insert into login(username, password, confirm, email)values('$username','$password','$confirm','$email')"; //插入數(shù)據(jù)庫(kù) if(!(mysqli_query($link,$sql))){ echo "<script>alert('數(shù)據(jù)插入失敗');window.location.href='zhuce.html'</script>"; }else{ echo "<script>alert('注冊(cè)成功!)</script>"; } } ?>
朋友們可以自己動(dòng)手進(jìn)行各種操作和嘗試,熟練以后就會(huì)對(duì)表單操作,數(shù)據(jù)庫(kù)的操作有一定深入的理解,為以后的開(kāi)發(fā)打下良好的基礎(chǔ)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- PHP使用HTML5 FormData對(duì)象提交表單操作示例
- 微信小程序?qū)W習(xí)筆記之表單提交與PHP后臺(tái)數(shù)據(jù)交互處理圖文詳解
- php防止表單重復(fù)提交實(shí)例講解
- PHP如何通過(guò)表單直接提交大文件詳解
- php 提交表單 關(guān)閉layer彈窗iframe的實(shí)例講解
- php實(shí)現(xiàn)表單提交上傳文件功能
- PHP實(shí)現(xiàn)防止表單重復(fù)提交功能【基于token驗(yàn)證】
- 解決php 處理 form 表單提交多個(gè) name 屬性值相同的 input 標(biāo)簽問(wèn)題
- PHP如何防止用戶(hù)重復(fù)提交表單
相關(guān)文章
PHP設(shè)計(jì)模式入門(mén)之迭代器模式原理與實(shí)現(xiàn)方法分析
這篇文章主要介紹了PHP設(shè)計(jì)模式入門(mén)之迭代器模式原理與實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了PHP迭代器模式基本概念、原理、實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下2020-04-04記Laravel調(diào)用Gin接口調(diào)用formData上傳文件的實(shí)現(xiàn)方法
這篇文章主要介紹了記Laravel調(diào)用Gin接口調(diào)用formData上傳文件的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12laravel5.4利用163郵箱發(fā)送郵件的步驟詳解
發(fā)送郵件是我們?nèi)粘T陂_(kāi)發(fā)中必不可少會(huì)遇到的一個(gè)需求,下面這篇文章主要給大家介紹了關(guān)于laravel5.4利用163郵箱發(fā)送郵件的步驟,文中通過(guò)示例代碼和圖片介紹的非常詳細(xì),需要的朋友可以參考下。2017-09-09新版php?study根目錄下文件夾無(wú)法顯示的圖文解決方法
這篇文章主要介紹了新版php?study根目錄下文件夾無(wú)法顯示解決方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12基于Swoole實(shí)現(xiàn)PHP與websocket聊天室
本文利用Swoole來(lái)實(shí)現(xiàn)PHP+websocket的聊天室,過(guò)程介紹的很詳細(xì),對(duì)聊天室的開(kāi)發(fā)很有幫助,有需要的可以參考學(xué)習(xí)。2016-08-08Laravel 6 將新增為指定隊(duì)列任務(wù)設(shè)置中間件的功能
這篇文章主要介紹了Laravel 6 將新增為指定隊(duì)列任務(wù)設(shè)置中間件的功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08PHP is_array() 檢測(cè)變量是否是數(shù)組的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇PHP is_array() 檢測(cè)變量是否是數(shù)組的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧2016-06-06Laravel 創(chuàng)建可以傳遞參數(shù) Console服務(wù)的例子
今天小編就為大家分享一篇Laravel 創(chuàng)建可以傳遞參數(shù) Console服務(wù)的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10