连接数据库 Connect

访问数据库的数据之前,先要与数据库建立连接,使用mysql_connect()方法与数据库建立连接。

mysql_connect()参数

<?php
//servername: 要连接的服务器。默认是 "localhost:3306"。
//username: 登录数据库的用户名。默认值是拥有服务器进程的用户的名称。
//password: 登录数据库的密码。默认是 ""。
mysql_connect(servername,username,password);
?>

连接数据库与关闭数据库连接的示例

<?php
//建立连接,返回连接
$con = mysql_connect("localhost","root","123456");
//如果连接失败,显示错误信息
if (!$con){
die('Could not connect:'.mysql_error());
}
echo "<h5>Connect Successful!!!</h5>";
//关闭数据库连接
mysql_close($con);
echo "<h5>Connect Closed!!!</h5>";
?>

创建数据库 Create Database

在此之前我们先要简单介绍一下mysql_query()这个方法,看起来它是一个查询方法,因为方法名里有一个query,但其实大部分的数据库操作下我们都会用到这个方法。

mysql_query()方法是用来向MySQL连接发送命令的。

我们现在试着来打开数据库连接,然后新建一个数据库,然后再关闭连接。

<?php
//建立连接
$con = mysql_connect("localhost","root","123456");
//失败的情况
if (!$con){
die('Could not connect: ' . mysql_error());
} //新建数据库
if (mysql_query("CREATE DATABASE my_db",$con)){
echo "Database created";
}else{
echo "Error creating database: " . mysql_error();
} //关闭连接
mysql_close($con);
?>

创建数据表 Create Table

在能够建立到数据库的连接并且创建了我们自己的数据库以后,我们可以开始试着创建我们自己的数据表。

我们现在创建一张Persons表,它记录了人的 姓、名和年龄。

这里需要注意的是,我们在创建表之前首先要对我们需要操作的数据库进行选择,让计算机知道我们要对哪个数据库进行操作。

所以这里存在一个选取即select的问题,我们使用mysql_select_db()方法来进行选择

<?php
//建立连接
$con = mysql_connect("localhost","root","123456");
if (!$con){
die('Could not connect: ' . mysql_error());
} //新建数据库
if (mysql_query("CREATE DATABASE my_db",$con)){
echo "Database created";
}else{
echo "Error creating database: " . mysql_error();
} //选择数据库
mysql_select_db("my_db", $con); //构造新建table的sql语句
$sql = "CREATE TABLE Persons (
personID int NOT NULL AUTO_INCREMENT,
PRIMARY KEY(personID),
FirstName varchar(15),
LastName varchar(15),
Age int
)";
//向连接发送命令
mysql_query($sql,$con); //关闭连接
mysql_close($con);
?>

增加新纪录 INSERT INTO

我们新增一条记录,仍然使用mysql_query()方法

我们给之前我们创建的Persons数据表新增一条记录

<?php
mysql_query(" INSERT INTO Persons (FirstName, LastName, Age) VALUES ('Larry', 'Carlton', '65') ");
?>

也可以换一种方式,先构造sql语句再执行,这样可以提高代码的优雅性

<?php
$sql = " INSERT INTO Persons (FirstName, LastName, Age) VALUES ('Larry', 'Carlton', '65') ";
mysql_query($sql, $con);
?>

而且我们往往要考虑到失败的情况,并且在操作成功的时候要给出一点提示,无论是log信息还是其他的什么提示都好

<?php
$sql = " INSERT INTO Persons (FirstName, LastName, Age) VALUES ('Larry', 'Carlton', '65') "; if (!mysql_query($sql, $con)){
die('Error: ' . mysql_error());
}
echo "1 record added";
?>

我们甚至可以直接把表单提交的数据通过$_POST或者$_REQUEST读取出来并且直接存入数据库

<?php
$sql="INSERT INTO Persons (FirstName, LastName, Age) VALUES ( '$_POST[firstname]', '$_POST[lastname]', '$_POST[age]' )"; if (!mysql_query($sql, $con)){
die('Error: ' . mysql_error());
}
echo "1 record added";
?>

查询 Select

我们查询出来的数据结果是一个集合,保存在一个数组变量当中,如果我们要逐行读取,那么就要去循环遍历,如果我们要指定读取,那么我需要一个index

mysql_fetch_array()就是这样一个方法,在这个方法内部有一个指针,每当我们读取一个,指针就跳向下一条数据,通过这种方式,我们把所有的数据都读出来

<?php
$result = mysql_query("SELECT * FROM Persons"); while($row = mysql_fetch_array($result)){
echo $row['FirstName'] . " " . $row['LastName'];
echo "<br />";
}
?>

修改数据 UPDATE

掌握了之前的知识点,update操作就只不过是换一条sql语句的问题了

<?php
mysql_query("UPDATE Persons SET Age = '60' WHERE FirstName = 'Larry' AND LastName = 'Carlton'");
?>

删除数据行 DELETE FROM

删除一行数据也同样简单

<?php
mysql_query("DELETE FROM Persons WHERE LastName='Carlton'");
?>

ODBC

我们的数据源不一定是MySQL,也有可能是Oracle或者MS Access之类的,这个时候我们需要进行一些ODBC操作

不过好在我们有了对数据库操作的基础,数据库的操作总体来说还是大同小异的

无非就是这么几个阶段

1.建立连接

2.新建数据库

3.选择数据库

4.执行sql命令

5.获取查询结果

6.关闭连接

那么按照这个顺序,我们来看一看ODBC都有哪些方法去和数据库打交道

建立连接(连接到ODBC数据源)

mysql_connect() vs odbc_connect()

<?php
odbc_connect("local","root","123456");
?>

执行sql语句

mysql_query($sql, $con) vs odbc_exec($con, $sql)

<?php
$sql="SELECT * FROM Persons";
$rs=odbc_exec($conn,$sql);
?>

获取记录

<?php
//MySQL方式
mysql_fetch_array($rs);
//ODBC方式
odbc_fetch_row($rs);
?>

从记录中读取字段

<?php
//通过index读取
$firstname=odbc_result($rs,1);
//通过key获取value
$age=odbc_result($rs,"age");
?>

关闭连接

<?php
//MySQL方式
mysql_close($con);
//ODBC方式
odbc_close($con);
?>

PHP与数据库的更多相关文章

  1. JSP应用开发 -------- 电纸书(未完待续)

    http://www.educity.cn/jiaocheng/j9415.html JSP程序员常用的技术   第1章 JSP及其相关技术导航 [本章专家知识导学] JSP是一种编程语言,也是一种动 ...

  2. nodejs进阶(6)—连接MySQL数据库

    1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...

  3. GreenDao 数据库:使用Raw文件夹下的数据库文件以及数据库升级

    一.使用Raw文件夹下的数据库文件 在使用GreenDao框架时,数据库和数据表都是根据生成的框架代码来自动创建的,从生成的DaoMaster中的OpenHelper类可以看出: public sta ...

  4. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  5. Java MyBatis 插入数据库返回主键

    最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...

  6. 在SQL2008查找某数据库中的列是否存在某个值

    在SQL2008查找某数据库中的列是否存在某个值 --SQL2008查找某数据库中的列是否存在某个值 create proc spFind_Column_In_DB ( @type int,--类型: ...

  7. 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  8. SQL Server2014 SP2新增的数据库克隆功能

    SQL Server2014 SP2新增的数据库克隆功能 创建测试库 --创建测试数据库 create database testtest use testtest go --创建表 )) --插入数 ...

  9. 数据库优化案例——————某市中心医院HIS系统

    记得在自己学习数据库知识的时候特别喜欢看案例,因为优化的手段是容易掌握的,但是整体的优化思想是很难学会的.这也是为什么自己特别喜欢看案例,今天也开始分享自己做的优化案例. 最近一直很忙,博客产出也少的 ...

  10. NoSql数据库使用半年后在设计上面的一些心得

    NoSql数据库这个概念听闻许久了,也陆续看到很多公司和产品都在使用,优缺点似乎都被分析的清清楚楚.但我心里一直存有一个疑惑,它的出现究竟是为了解决什么问题? 这个疑惑非常大,为此我看了很多分析文章, ...

随机推荐

  1. Swift-属性监听

    监听属性的改变(开发中使用很多) oc中长是重写set方法 swift通过属性监听器 class Dog: NSObject { var name:String?{ // 属性监听器 // 属性即将改 ...

  2. 对IT行业的看法和对软件工程的理解

    现在社会上IT行业的人才需求越来越大,而作为一个学软件工程的大学生,我认为IT行业是一个前景十分强大的发展方向,而且现在的社会越来越信息化,未来的生活中,电脑肯定是不可缺少的,所以我认为IT行业这是一 ...

  3. Scrum Meeting Beta - 4

    Scrum Meeting Beta - 4 NewTeam 2017/12/2 地点:新主楼F座二楼 任务反馈 团队成员 完成任务 计划任务 安万贺 完成了部分页面标题栏颜色的修改和字体的调整Iss ...

  4. 虚拟机中安装 centOS,本地安装 SSH 连接 - 02

    先进入 centOS 中,查询虚拟机的 IP 地址: 双击打开 SSH 可视化客户端: 点击 Connect 需要输入之前那个[无论如何都要使用]的密码. 密码在[centOS - 01]里面设置过, ...

  5. 【vim】vim常用命令

    移动: h 或 向左箭头键(←)  #光标向左移劢一个字符 j 或 下箭头键(↓)    #光标向下移劢一个字符 k 或 向上箭头键(↑)    #光标向上移劢一个字符 l 或 向右箭头键(→)    ...

  6. 【.Net】Net开发

    博客里的好多文章都是本人看着比较好,就转过来的,好少自己亲自去写点什么,也很少把自己学的一点心得于大家分享,今天特别想聊一下,关于本人做Net开发时的那段回忆! 一.关于知识的回忆 还记得Handle ...

  7. 【数据库】mysql中复制表结构的方法小结

    mysql中用命令行复制表结构的方法主要有一下几种: 1.只复制表结构到新表 ? 1 CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2 或者 ? 1 CREATE ...

  8. action动作类的生命周期

    创建:Action动作类每次请求的时候都会创建一个实例对象 销毁:当前action动作类的请求响应完后就消失了 跟javaweb中的HttpServletRequest的生命周期是一样的,struts ...

  9. [AT2377] [agc014_e] Blue and Red Tree

    题目链接 AtCoder:https://agc014.contest.atcoder.jp/tasks/agc014_e 洛谷:https://www.luogu.org/problemnew/sh ...

  10. [NOIP2016 D1T3]换教室 【floyd+概率dp】

    题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n2n 节课程安排在 nn 个时间段上.在第 ii(1 \leq i \leq n1≤ ...