文章简单的介绍了从数据库连接到把用户提交的数据保存到mysql数据库的整个过程,一一讲解了操作方法,有需要的朋友看看下面五步.
1. 创建一个数据库连接
2. 发送一些不是必须的语句
3. 选择一个存储的数据库
4. 编写数据库插入语句
5. 发送这个语句
先看数据结构,代码如下:
-
-
-
-
- CREATE TABLE IF NOT EXISTS `guest` (
- `id` int(11) NOT NULL auto_increment COMMENT '客户自增id',
- `name` varchar(16) NOT NULL COMMENT '客户名称',
- `email` varchar(60) default NULL COMMENT '电子信箱',
- `qq` varchar(11) default NULL COMMENT 'QQ号码',
- PRIMARY KEY (`id`)
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
-
-
-
-
-
-
-
-
-
-
-
-
- CREATE TABLE IF NOT EXISTS `post` (
- `id` int(11) NOT NULL auto_increment COMMENT 'post主键',
- `guest_id` varchar(11) NOT NULL COMMENT '发布人id',
- `post` text NOT NULL COMMENT '发布内容',
- `post_time` varchar(14) NOT NULL COMMENT '发布时间',
- PRIMARY KEY (`id`)
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
-
-
-
-
-
-
-
详细的分析也就这么五个步骤了,那么我们开始第一步吧,利用PHP提供的内置函数mysql_connect来创建一个数据库链接,这个函数需要三个参数,格式如下.
Mysql_connect(‘数据库所在的主机’,’链接数据库的用户名’,’链接数据库的密码’),这个函数返回一个数据库连接资源号.
看我们在post.php中的链接代码,代码如下:
$con=mysql_connect('localhost','root','root') or die('链接数据库失败!');
mysql_query('set names utf8');
mysql_select_db('GuestBook');
第一行创建一个数据库连接,把资源号赋给变量$con,如果连接失败,结束程序的执行输出提示信息“链接数据库失败!”.
第二行发送一个字符集设定语句,让数据在数据库中的出入都使用utf8字符集,这个语句是可有可无的,其中的语句可以写成set names gbk或者set names gb2312等等我们需要的字符集.
第三行利用PHP提供的mysql_select_db函数来选择我们要使用的数据库.
值得注意的是,mysql_query这个函数本身有两个参数:第一个参数就是我们要发送的数据库执行语句sql,第二个参数是数据库连接的资源编号,如果第二个参数没有指定的话,那么程序就会查找最近一个链接资源,也就是说这个参数不是必须的,我们以上包括将来的写法都是没有第二个参数的,按照程序的上下文我们第二行的语句可以写作:
mysql_query(“set names utf8”,$con)这样也是正确的.
这个函数的返回值是布尔型的,如果语句成功执行就返回true否则返回false——了解这一点很重要,到此为止我们的数据库连接已经就绪,开始组装我们的sql插入语句,看一下代码,post.php:
- $insertSql="insert into guest (name,qq,email) values ('$name','$qq','$email')";
- if(mysql_query($insertSql)){
- $guestid = mysql_insert_id();
- }
- else{
- echo $insertSql;
- echo mysql_error();
- echo "数据插入失败!";
- exit();
- }
在这个片段的第一行中我们组建了一个sql的插入语句,这个看来没什么可说的,唯一点就是把变量写进这些语句并且用引号包裹起来——对于数字型的不需要引号.
第二句发送语句,并判断是否被成功执行。
这个地方需要说明:PHP中if判断中的语句是会被执行的,例如if($c=$a+$b)这样的语句被执行的顺序是,先计算里面的语句然后再对结果作出判断。所以执行之后$c的值是$a,$b之和,判断的时候是对$c作出的判读。
所以在这个地方if判断的是mysql_query($insertSql)的返回结果,语句已经发送到了数据库。
第三行出现的函数mysql_insert_id——获取最近一次插入数据的时候自增序列的值,我们这里获取的是guest表中的id,因为只有这个id才是自增的,以备后用。
这个片段的第五行到最后都是进行的错误处理,如果语句没有被成功执行,那么就执行这些程序,倒数第二行的exit();函数的意思是终止程序向下执行.
这时候我们已经把guest信息保存到了Mysql的GuestBook的guest表中了,看一下post.php文件,代码如下:
-
- $post_time = time();
- $insertPostSql = "insert into post(guest_id,post,post_time) values('$guestid','$post','$post_time')";
- if(mysql_query($insertPostSql)){
- echo <<<tem
- <script>
- alert("留言成功");
- location.href="index.php";
-
- </script>
- tem;
- }
- else{
- echo <<<tem
- <script>
- alert("留言失败");
- location.href="index.php";
- </script>
- tem;
- }
|