在PHP开发中,mysql或者mysqli是现在大家使用较多的数据库连接方式。在PHP5中已经开始有PDO支持了,听说在下一个版本PHP6中,PDO将会作为默认的数据库链接工具,不管是真还是假,PDO作为数据库的另一种连接方式在不久的将来也许会很普遍的使用,这里清源就目前掌握的知识来看,将PDO的使用以实例的方式和大家分享一下,文章的部分代码来源于网络。
在使用PDO之前首先要设置PHP.INI文件,使PHP支持PDO,因为PHP5默认是不支持的。在PHP安装目录下找到PHP.INI文件,打开并搜索extension=php_pdo.dll 和 extension=php_pdo_mysql.dll,将前面的分号(;)去掉,重启apache即可。
接下来我们就开始写PHP代码了,首先是连接数据库,看下面的例子:
<?php
define('DB_NAME', 'pdo_test');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
try {
$DBH = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASSWORD);
$DBH->exec('SET CHARACTER SET '.DB_CHARSET);
$DBH->exec('SET NAMES '.DB_CHARSET);
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
?><?php //增加数据 $sql_insert = 'Insert INTO wp_options(blog_id,option_name,option_value,autoload) VALUES (0,'.time().rand(1,100).','.time().rand(1,100).',\'no\')'; $back = $DBH->exec($sql_insert); //返回 bool 的true or fal $lastInsertId = $DBH->lastInsertId(); //删除数据 $sql_delete = 'Delete FROM wp_options Where option_id='.$lastInsertId; $back = $DBH->exec($sql_delete); //返回 bool 的true or fal $lastInsertId = $DBH->lastInsertId(); //更新数据 $sql_update = 'Update wp_options SET option_name = \''.time().rand(1,100).'\' Where option_id='.$lastInsertId; $lastUpdateId = $DBH->lastInsertId(); //返回的对应的操作的id //查询数据 $sql_select = 'Select option_id FROM wp_options orDER BY option_id DESC LIMIT 4 '; $back = $DBH->query($sql_select); //返回一个对象 这个对象可以用foreach 直接遍历循环 循环的为查询的结果集 $back = $DBH->query($sql_select)->fetch(); //返回一条数据结果 这个对象可以用foreach 直接遍历循环 循环的为查询的结果集 $back = $DBH->query($sql_select)->fetchAll(); //返回一个数组 这个对象可以用foreach 直接遍历循环 循环的为查询的结果集 $back = $DBH->query($sql_select)->fetchColumn(0); //返回一个字段字符串,这个字符串是返回的记录的第一条记录的第一个字段 ?>
<?php
try{
$DBH->beginTransaction();//开启一个事务
//Sql 执行的内容 ......................
$DBH->exec($sql_insert); //执行一系列的操作
$DBH->exec($sql_update);
$DBH->exec($sql_delete);
//等等
$DBH->commit(); //如果正确执行完成 那么确认 commit
} catch(Exception $e) {
$DBH->rollBack();//如果执行中有错误的情况下 回滚
}
?><?php
$sql_procedure = '
Create PROCEDURE inout_test(
IN in_option_id INT,
OUT out_option_name VARCHAR(255),
OUT out_option_value TEXT
)
BEGIN
Select option_name INTO out_option_name FROM wp_options Where option_id = in_option_id;
Select option_value INTO out_option_value FROM wp_options Where option_id = in_option_id;
END;
';
try{
$sql_drop_procedure = 'Drop PROCEDURE inout_test';
$back = $DBH->exec($sql_procedure);
$sql_call_procedure = 'CALL inout_test(100,@out_option_name,@out_option_value)';
$DBH->exec($sql_call_procedure);
$sql_select_procedure = 'Select @out_option_name,@out_option_value';
$back = $DBH->query($sql_select_procedure)->fetch();
$back = $DBH->exec($sql_drop_procedure);
}catch(Exception $e){
echo $e->getMessage();
}
?><?php
$stmt = $DBH->prepare('Insert INTO wp_options(blog_id,option_name,option_value,autoload) VALUES (0,:option_name,:option_value,\'no\')');
$option_name = $option_value = '';
$stmt->bindParam(':option_name', $option_name); //
$stmt->bindParam(':option_value', $option_value);
// 插入一条数据A
$option_name = 'name'.time();
$option_value = 'value'.time();
$stmt->execute();
// 插入另一条不同的数据B
$option_name = 'name_'.time();
$option_value = 'value_'.time();
$stmt->execute();
$stmt = $DBH->prepare('Insert INTO wp_options(blog_id,option_name,option_value,autoload) VALUES (0,?,?,\'no\')');
$option_name = $option_value = '';
$stmt->bindParam('1', $option_name); //
$stmt->bindParam('2', $option_value);
// 这里我们还可以插入A数据
$option_name = 'name'.time();
$option_value = 'value'.time();
$stmt->execute();
// 这里我们同样还可以插入B数据
$option_name = 'name_'.time();
$option_value = 'value_'.time();
$stmt->execute();
$stmt = $DBH->prepare("Select * FROM wp_options where option_id = ?");
if ($stmt->execute(array(@$_GET['option_id']))) {
while (@$row = $stmt->fetch()) {
print_r($row);
}
}
?>
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号