PHP学习笔记之三 数据库基本操作


Posted in PHP onJanuary 17, 2011

下面是在Linux上登录mysql,创建数据库和创建表的过程。

yin@yin-Ubuntu10:~$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 360
Server version: 5.1.41-3ubuntu12.1 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database UseCase;
Query OK, 1 row affected (0.00 sec)

mysql> use UseCase;
Database changed

mysql> create table User(UserName varchar(20) primary key,Password varchar(20) not null,CreateTime timestamp default current_timestamp);
Query OK, 0 rows affected (0.01 sec)下面就来建立一个页面来完成新建用户的页面。首先是一个简单的表单:

<form action="db.php" method="post"> 
<dl> 
<dt>UserName</dt><dd><input name="UserName" maxlength="20" type="text"/></dd> 
<dt>Password</dt><dd><input name="Password" maxlength="20" type="password"/></dd> 
<dt>Confirm Password</dt><dd><input name="ConfirmPassword" maxlength="20" type="password"/></dd> 
</dl> 
<input type="submit" name="ok" value="ok"/> 
</form>

PHP通过$_POST数组来获得通过post方法提交的表单中的数据。在PHP程序中,我们首先要判断是有OK字段,从而判断出该页面是首次访问,还是用户点击OK后提交的,接着判断两次密码输入是否统一。然后就可以获取到用户名和密码,插入数据库中。PHP连接MySQL数据库一般可以利用mysql扩展或者mysqli扩展,mysqli扩展比较新一点,这里我们采用这种方式。mysqli可能需要安装配置下,不过在我的环境中是默认装好的。利用mysqli扩展操作数据库一般分为如下几步:构造mysqli对象,构造statement,绑定参数,执行,关闭。代码如下:
<?php 
$match=true; 
if(isset($_POST["ok"])) { 
$pwd=$_POST["Password"]; 
$pwdConfirm=$_POST["ConfirmPassword"]; 
$match=($pwd==$pwdConfirm); 
$conn=new mysqli("localhost","root","123","UseCase"); 
if (mysqli_connect_errno()) { 
printf("Connect failed: %s\n", mysqli_connect_error()); 
exit(); 
} 
$query="insert into User(UserName,Password) values(?,?)"; 
$stmt=$conn->stmt_init(); 
$stmt->prepare($query); 
$stmt->bind_param('ss',$name,$pwd); 
$name=$_POST["UserName"]; 
$pwd=$_POST["Password"]; 
$stmt->execute(); 
if($stmt->errno==0) { 
$success=true; 
}else { 
$success=false; 
} 
$stmt->close(); 
$conn->close(); 
} 
?>

其中bind_param方法需要稍微解释下,第一个参数的含义是参数类型。每个字符对应一个参数,s表示字符串,i表示整数,d表示浮点数,b表示blob。最后,再为这个页面添加一点提示信息:
<?php 
if(!$match) { ?> 
<p>Password and Confirm Password must match.</p> 
<?php 
} 
?> 
<?php 
if(isset($success)) { 
if($success) { 
echo '<p>User Created Successfully!'; 
}elseif($sucess==false) { 
echo '<p>User Name existed.'; 
} 
} 
?>

再接下来,我们编写一个用户列表页面。
<table> 
<tr><th>User Name</th><th>CreateTime</th><th>Action</th> 
</tr> 
<?php 
include 'conn.php'; 
$query="select * from User;"; 
$res=$mysql->query($query); 
while($row=$res->fetch_array()) { 
?> 
<tr> 
<td><?= $row['UserName'] ?></td> 
<td><?= date('Y-m-d',strtotime($row['CreateTime']))?> </td> 
<td><a href="UserEdit.php?action=update&ID=<?= $row['UserName'] ?>">Edit</a> 
<a href="action=delete&ID=<?= $row['UserName'] ?>">Delete</a> 
</td> 
</tr> 
<?php 
} 
$res->close(); 
$mysql->close(); 
?> 
</table>
PHP 相关文章推荐
Php做的端口嗅探器--可以指定网站和端口
Oct 09 PHP
php for 循环语句使用方法详细说明
May 09 PHP
php中显示数组与对象的实现代码
Apr 18 PHP
如何在Ubuntu下启动Apache的Rewrite功能
Jul 05 PHP
有关于PHP中常见数据类型的汇总分享
Jan 06 PHP
php使用mkdir创建多级目录入门例子
May 10 PHP
php实现Mongodb自定义方式生成自增ID的方法
Mar 23 PHP
PHP远程调试之XDEBUG
Dec 29 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
Feb 14 PHP
php通过smtp邮件验证登陆的方法
May 11 PHP
PHP转换文本框内容为HTML格式的方法
Jul 20 PHP
PHP与jquery实时显示网站在线人数实例详解
Dec 02 PHP
PHP学习笔记之二
Jan 17 #PHP
PHP学习笔记之一
Jan 17 #PHP
php下连接mssql2005的代码
Jan 17 #PHP
Php Image Resize图片大小调整的函数代码
Jan 17 #PHP
php生成随机密码的几种方法
Jan 17 #PHP
PHP校验ISBN码的函数代码
Jan 17 #PHP
PHP中用正则表达式清除字符串的空白
Jan 17 #PHP
You might like
关于PHP递归算法和应用方法介绍
2013/04/15 PHP
php使用date和strtotime函数输出指定日期的方法
2014/11/14 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
2018/01/29 PHP
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
jquery让指定的元素闪烁显示的方法
2015/03/17 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
jQuery实现延迟跳转的方法
2015/06/05 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
jquery通过name属性取值的简单实现方法
2016/06/20 Javascript
Vue.JS入门教程之事件监听
2016/12/01 Javascript
Vue路由跳转问题记录详解
2017/06/15 Javascript
AngularJS 前台分页实现的示例代码
2018/06/07 Javascript
vue中的watch监听数据变化及watch中各属性的详解
2018/09/11 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
2020/08/21 Javascript
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
django连接oracle时setting 配置方法
2019/08/29 Python
django连接mysql数据库及建表操作实例详解
2019/12/10 Python
Python多重继承之菱形继承的实例详解
2020/02/12 Python
在Keras中实现保存和加载权重及模型结构
2020/06/15 Python
马来西亚演唱会订票网站:StubHub马来西亚
2018/10/18 全球购物
Mamaearth官方网站:印度母婴护理产品公司
2019/10/06 全球购物
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
迪斯尼假期(欧洲、中东及非洲):Disney Holidays EMEA
2021/02/15 全球购物
本科生学习总结的自我评价
2013/10/02 职场文书
库房主管岗位职责
2013/12/31 职场文书
五星级酒店餐饮部总监的标准岗位职责
2014/02/17 职场文书
餐饮服务员岗位职责
2015/02/09 职场文书
无保留意见审计报告
2015/06/05 职场文书
公务员学习中国梦心得体会
2016/01/05 职场文书
2016年心理学教育培训学习心得体会
2016/01/12 职场文书
2019新员工心得体会
2019/06/25 职场文书
Golang 链表的学习和使用
2022/04/19 Golang
Nginx如何配置根据路径转发详解
2022/07/23 Servers