18.4实战演练1——使用INSERT语句动态添加用户信息
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所示。

图18-5 insertform.html
04 单击“Add”按钮,页面跳转至insertformhandler.php,并且返回信息结构如图18-6所示。

图18-6 insertformhandler.php页面
这时数据库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"三个变量要以字符串形式加入。
