PHP学习(四)

Database

在 php5 之前,推荐使用的方式是例如 php_mysql.dll/php_psql.dll 等原生驱动。

比如, php_mysql.dll 的语法如下:

// 首先,设置页面编码
header("Content-Type: text/html; charset=UTF8");

// 其次,建立数据库连接
$conn = mysql_connect("localhost", "root", "root") or die("数据库连接失败");

// 创建数据库
if(mysql_query("create database xxx", $con)) {
    echo "创建数据库成功。";
} else {
    echo "创建数据库失败:" . mysql_error() . "<br>";
}

// 切换到数据库
mysql_select_db("xxx") or dir("打卡数据库失败。");

// 设置 utf8 编码
mysql_query("select names utf8");

// 创建表
$sql = "create table person
(
  id int primary key auto_increment,
  name varchar(20) not null,
  salary float default 1500
)
";
mysql_query($sql);

// 插入数据
mysql_query("insert into person (name, salary) values (‘张飞‘, 3333)");
mysql_query("insert into person (name, salary) values (‘关羽‘, 3334)");

// 查询数据
// 返回结果是:万能的数组
$res = mysql_query("select * from person");

// 显示数据,使用 foreach 循环
echo "<table>\n";
foreach($res as $r) {
    echo "  <tr><td>$r[name]</td><td>$r[salary]</td></tr>\n";
}
echo "\n</table>";

// 最后,释放连接
mysql_close($conn);

因为 mysql 插件有很多问题,所以,后来出现了 php_mysqli.dll 插件,其中 i 代表 improvement(改进/升级) 的意思,对连接数据库的效率及安全性进行了大量优化。

mysqli 插件除了完全兼容 mysql 的语法之外,还支持用 oo 的方式连接数据库:

// 连接数据库
$conn = new mysqli("localhost", "root", "root", "text");
$conn -> query("set names utf8");

// 查询
$sql = $conn->query("select * from person");

// 获取结果
$res = $conn->fetch_array(MYSQLI_ASSOC);

// 显示结果
echo "<table>\n";
echo "<tr><td>" . $res[‘name‘] . "</td><td>" . $res[‘salary‘] . "</td></tr><br>";
echo "</table>";

虽然 mysqli 插件已经非常好用。但是…

php 能连接的数据库可不止 mysql 啊,还有 oracle/sqlserver/postgres/sqlite 等,每个数据库都有自己的插件,都有自己的语法…所以后来,PHP 推出了自己的连接数据库的标准, 即 PDO(PHP Data Object) 接口,对数据库的连接进行了规范。所以,采用 DPO 的所有数据库,语法得到了统一:

// 连接数据库
$pdo = new PDO("mysql:host=localhost;dbname=test", "root", "root", "test");

// 操作数据库n
$pdo->exec("set names utf8");
$pdo->exec("create table person ...") or die("创建失败");
$pdo->exec("insert into  person ...") echo and ("插入成功");

// query
$st = $pdo->query("select xxx from yyy");
$rows =  $st->fetch(PDO::FETCH_ASSOC);
print_r($rows);

// 使用 Prepare 的方式进行操作
$stmt = $pdo->prepare("select name from person where id = :id");
$stmt->bindParam(":id", $xxx, PDO::PARAM_INT);
$stmt = $stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($rows);

// 释放链接
$pdo = null;

原文地址:https://www.cnblogs.com/Mingsnow/p/8127388.html

时间: 2024-10-18 17:57:55

PHP学习(四)的相关文章

nodejs学习四 Node.js NPM

什么是NPM? 不知道大家注意没有,windows平台下的Node.js安装包大小才区区4M多,真可以用短小精悍来形容它,作为一种编程语言,像java一个SDK 就几十M,为什么node.js的运行环境这么小呢?这其中的微妙之处在于,它拥有一个庞大的第三方软件库. 在Node本身提供的包(原生)中没有我们要实现的功能模块的时候,我们可以去寻找下是否已经有人实现了这种功能.毕竟重复造轮子这种事情,很多人都不想干. 去哪里寻找我们想要的包呢?如果你还不知道报的名字,你可以去https://www.n

ZigBee学习四 无线+UART通信

ZigBee学习四 无线+UART通信 1) 协调器编程 修改coordinator.c文件 byte GenericApp_TransID; // This is the unique message ID (counter) afAddrType_t GenericApp_DstAddr; //unsigned char uartbuf[128];/********************************************************************** L

Spark学习四:网站日志分析案例

Spark学习四:网站日志分析案例 标签(空格分隔): Spark Spark学习四网站日志分析案例 一创建maven工程 二创建模板 三日志分析案例 一,创建maven工程 1,执行maven命令创建工程 mvn archetype:generate -DarchetypeGroupId=org.scala-tools.archetypes -DarchetypeArtifactId=scala-archetype-simple -DremoteRepositories=http://scal

Beaglebone Back学习四(GPIO实验)

GPIO Beaglebone Back开发板引出了92个引脚,其中只有65个GPIO口可通过配置使用,由于引脚具有"复用"的特性,大约每个引脚有8种工作模式(Beagle System Reference Manual),默认情况下,设为Mode7.由于P8扩展部分的引脚功能相对简单,复用不多,故项目功能复杂时,最好选择P8上的GPIO口. 对GPIO口的操作,主要有三个步骤 1 选择GPIO口根据以下两表,确定使用那个GPIO口,该表也可以在BBB_SRM文件中找到. (1)拉电流

Silverlight学习(四) domainservice动态多条件查询

上次讲了silverlight+MVVN+EF的简单框架,能够实现简单的数据CURD,但是多条件动态的查询一直没有实现.在网上查阅了很多资料,发现自己走了很多误区,代码很难调试正确. 这次的查询是基于上次的查询,只是增加了一个查询条件,动态多条件的查询的重点是获取查询的语言. 1 private string GetSql() 2 { 3 string query = "1=1"; 4 if (!string.IsNullOrEmpty(searchText.name)) 5 { 6

Gradle学习(四) web工程构建

Gradle为应用开发提供了两个相关的插件:war plugin以及jetty plugin war plugin继承了java plugin为你的工程构建war包,jetty pugin继承了war plugin可以让的工程构建在嵌入式容器jetty中 构建War文件 首先在你的build.gradle中添加如下一行 apply plugin: 'war' 由于war plugin继承了java plugin,所有java plugin也会被默认的加入配置文件中 运行gradle build命

TweenMax动画库学习(四)

目录            TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)            TweenMax动画库学习(四)            TweenMax动画库学习(五)  

Android学习四、Android中的Adapter

一.Adapter的介绍 An Adapter object acts as a bridge between an AdapterView and the underlying data for that view. The Adapter provides access to the data items. The Adapter is also responsible for making a View for each item in the data set. 一个Adapter是Ad

Cmdlet开发与学习(四)

前面讲完了一个基本的cmdlet的开发流程,下面将陆续地完善cmdlet的功能细节以及补充.       支持ShouldProcess       有的cmdlet操作有很大的破坏性,因此有必要再命令执行前提醒用户注意一些可能的执行后果,也就是说,存在与用户的交互.这个时候,通过使用ShouldProcess,可以达到预期的效果. 1 [Cmdlet(VerbsCommon.Get,"SQLServerBackupFile", 2 SupportsShouldProcess = tr

JBPM学习(四):执行流程实例

1.创建表空间 create tablespace TEST logging datafile 'e:\app\administrator\oradata\orcl\TEST.dbf' size 100M autoextend on next 100M maxsize 4096M extent management local; 2.创建用户并指定表空间 create use testuser identified by password default tablespace TEST temp