18.4 实战演练1——使用INSERT语句动态添加用户信息
在上一节的实例中,程序通过form查询了特定用户名的用户信息。下面将使用其他SQL语句实现PHP的数据请求。
下例通过使用adatabase的user数据库表格,添加新的用户信息,具体操作步骤如下。
01 在phpmysql文件夹下建立文件insertform.html,并且输入代码如下。
<html> <head> <title>Adding User</title> </head> <body> <h2>Adding users to mysql database.</h2> <form action="formhandler.php" method="post"> Select gender: <select name="gender"> <option value="male">man</option> <option value="female">woman</option> </select><br /> Fill user name: <input name="username" type="text" size="20"/> <br /> Fill user age: <input name="age" type="text" size="3"/> <br /> Fill user info: <input name="info" type="text" size="60"/> <br /> <input name="submit" type="submit" value="Add"/> </form> </body> </html>
02 在phpmysql文件夹下建立文件insertformhandler.php,并且输入代码如下。
<html> <head> <title>User adding</title> </head> <body> <h2>adding new user.</h2> <?php $username = $_POST['username']; $gender = $_POST['gender']; $age = $_POST['age']; $info = $_POST['info']; if(!$username and !$gender and !$age and !$info){ echo "Error: There is no data passed."; exit; } if(!$username or !$gender or !$age or !$info){ echo "Error: Some data did not be passed."; exit; } if(!get_magic_quotes_gpc()){ $username = addslashes($username); $gender = addslashes($gender); $age = addslashes($age); $info = addslashes($info); } @ $db = mysqli_connect('localhost','root','753951'); mysqli_select_db($db,'adatabase'); if(mysqli_connect_errno()){ echo "Error: Could not connect to mysql database."; exit; } $q = "INSERT INTO user( name, age, gender, info) VALUES ('$username',$age,'$gender', '$info')"; if( !mysqli_query($db,$q)){ echo "no new user has been added to database."; }else{ echo "New user has been added to database."; }; mysqli_close($db); ?> </body> </html>
03 运行insertform.html,运行结果如图18-5所示。
04 单击“Add”按钮,页面跳转至insertformhandler.php,并且返回信息结构如图18-6所示。
这时数据库user表格中,就被添加了一个新的元素。
【案例讲解】
(1)insertform.html文件中,建立了user表格中除“id”外每个字段的文本框。
(2)insertformhandler.php文件中,建立MySQL连接,生成连接对象等操作都与上例中的程序相同。只是改变了SQL请求语句的内容为$q = "INSERT INTO user( name, age, gender, info) VALUES ('$username',$age,'$gender', '$info')";。
(3)其中name、gender、info字段为字符串型,所以'$username'、'$gender'、'$info'三个变量要以字符串形式加入。