php操作

PHP操作MySQL-访问数据库「程序员培养之路第四十八天」

连接MySQL服务器

建立与MySQL数据库的连接,使用mysqli_connect()函数,它的语法格式如下:

mysqli mysqli_connect ([string server[, string username[, string password[, string dbname[, int port[, string socket]]]]]])

它的参数含义如下:

server:可选参数,MySQL服务器地址。username:可选参数,MySQL服务器用户名。password:可选参数,MySQL服务器用户密码。dbname:可选参数,要连接的数据库名字。port:可选参数,MySQL服务器的端口号,默认3306。socket:可选参数,使用设置的socket或者pipe。注意:前四个参数比较常用,后两个很少用到。

PHP

选择MySQL数据库

PHP提供了mysqliselectdb()函数来选择MySQL数据库,它的语法格式如下:

<?php$server = "localhost"; $username = "root"; $password = "123456"; $dbname = "php_db"; // 快速写法 $mysqli = new mysqli ( $server, $username, $password, $dbname ); // 兼容写法 $mysqli = new mysqli ( $server, $username, $password ); mysqli_select_db ( $mysqli, $dbname ); // 对象写法 $mysqli = new mysqli (); $mysqli->connect ( $server, $username, $password ); $mysqli->select_db ( $mysqli, $dbname );?>

断开MySQL服务器

使用mysqli_close()函数来关闭与MySQL服务器的连接。

执行SQL语句

数据库的“增删改查”说到底都是一句SQL语句,PHP提供了mysqli_query()函数来执行SQL语句,它的语法如下:

mixed mysqli_query (mysqli link, string query[, int resultmode])

link : 是调用mysqli_connect()函数返回的mysqli对象,

query : 是要执行的SQL语句,

resultmode : 是可选参数,它的默认值是MYSQLISTORERESULT,如果需要查询的数据量很大,需要使用MYSQLIUSERESULT。

<?php$server = "localhost"; $username = "root"; $password = "123456"; $dbname = "account_db"; $mysqli = new mysqli ( $server, $username, $password, $dbname ); // 增 $result = mysqli_query ( $mysqli, "insert into account(username, password, email) values('张三', '123456', 'zhangsan@example.com')" ); // 删 $result = mysqli_query ( $mysqli, "delete from account where user='张三'" ); // 改 $result = mysqli_query ( $mysqli, "update account set password='abcdefg' where user='张三'" ); // 查 $result = mysqli_query ( $mysqli, "select * from account " ); mysqli_close ( $mysqli );?>

面向对象的编程-抽象类和接口「程序员培养之路第四十六天」

面向对象的编程-__autoload()「程序员培养之路第四十五天」

面向对象的编程-多态「程序员培养之路第四十四天」

展开
收起

PHP操作MySQL-SQL注入及附录「程序员培养之路第五十二天」

SQL注入就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。SQL注入通常由于执行sql语句时,没有对用户通过Web表单提交的参数或者查询的字符串没有进行特殊字符过滤等,导致欺骗服务器执行恶意SQL命令。

为了防止这种情况,写脚本文件的时候,通常会考虑防止SQL注入,最简单的办法就是使用预处理语句,因为预处理语句事先已经编译了语句,传递的参数是不参与解释的。

PHP

附录:

PHP的报错级别

$_SERVER参数

PHP操作MySQL-解析结果集「程序员培养之路第五十一天」

PHP操作MySQL-预处理语句「程序员培养之路第五十天」

PHP操作MySQL-其他「程序员培养之路第四十九天」

展开
收起

使用php7连接oracle的操作

1.解压客户端放到一个目录下,新建tnsnames.ora放到客户端文件夹的子目录下。

2.加入以下代码:est_db是自己起的连接名字,IP替换为远程oracle的IP,service_name放数据库名字

3.开启php的oci扩展或者pdo_oci扩展,连接测试。

php7因为没有带php_oci_11g的扩展,需要自己安装获取去下载对应版本的dll文件,放到php的ext目录下,在php.ini中开启扩展。

在开启后可能会出现windows缺失oci.dll文件。

4.将上面客户端里面的oci.dll文件拷贝到php的目录下即可--》启动php,查看PHPinfo里面应该会出现如下扩展:

5.测试尝试连接数据库代码:

6.PDO方式会抛出如下的异常(SQLSTATE[]: pdo_oci_handle_factory: <<Unknown>> (ext\pdo_oci\oci_driver.c:642))

这时候如果把刚才拷贝到php目录下的文件删除的话,有些被用到肯定就不能删,经过测试,只有下面这个文件和刚才的oci.dll文件不能删除。

7.还有个特点就是很大,里面封装了很多函数扩展什么的。

现在就大功告成了,在此测试一下上面的PHP代码:

【IT科技之家-itkeji综合 -文章版权声明】

非特殊说明,本文版权归 [ IT科技之家-itkeji综合 -ITMFB] 所有,转载请注明出处.

展开
收起

PHP怎么连接Mysql数据库?

PHP连接mysql数据库是PHP新手们必须要掌握的一项技能,只要掌握了PHP对数据库进行增删改查等操作,就可以写出一些简单且常见的程序。如留言表,新闻页等。本篇文章主要给大家详细介绍PHP连接Mysql数据库的两种常用方法。

下面我们通过具体的代码示例来给大家详细介绍两种PHP连接mysql数据库的方法。

mysqli连接数据库和pdo连接数据库。

第一种方法:使用mysqli连接mysql数据库

代码实例如下:

<?php

$host='127.0.0.1';

$user='root';

$password='root';

$dbName='php';

$link=new mysqli($host,$user,$password,$dbName);

if ($link->connect_error){

die("连接失败:".$link->connect_error);

}

$sql="select * from admins";

$res=$link->query($sql);

$data=$res->fetch_all();

var_dump($data);

在经过一系列的连接操作后,我们再创建一个sql语句对其中数据表进行查询检验。在上述代码中,我们要先创建一些需要用到的变量,如数据库用户名、数据库名密码等。然后我们用面向对象的方式连接了名为php的数据库。再通过if条件语句,connect-error方法判断PHP连接数据库是否成功。

这里我们先登录phpmyadmin看看是否存在php数据库,从下图可以知道是存在php这个数据库的。

最后通过浏览器访问,结果如下图:

从图中可以得知,我们成功地连接了php数据库,并且能查询出数据表信息。

第二种方法:使用PDO连接数据库

代码示例如下:

<?php

$host='127.0.0.1';

$user='root';

$password='root';

$dbName='php';

$pdo=new PDO("mysql:host=$host;dbname=$dbName",$user,$password);

$sql="select * from admins";

$data=$pdo->query($sql)->fetch();

var_dump($data);

PHP连接Mysql步骤以上就是关于PHP连接数据库查询数据的两种常用方法详解,更多相关教程请访问php中文网mysql视频教程,欢迎参考学习!

展开
收起

PHP操作MySQL-预处理语句「程序员培养之路第五十天」

PDO提供对预处理语句的支持。

预处理语句是预先将一个预处理的sql语句发送到数据库服务器,执行其他sql语句只是修改预处理语句里对应的参数。简单的说,就是将sql语句强制一分为二:第一部分为前面相同的命令和结构部分,第二部分为后面可变的数据部分。预处理语句,可以减轻数据库服务器压力。

MySQL

定义预处理语句

使用prepare()方法执行sql预处理语句,得到一个PDOStatement实例,sql预处理语句通常有如下两种定义方式:

命名参数:自定义的有意义的字符串作为命名参数,前面加上冒号。insert into table_name(name,password,email) values(:name,:password,:email)

问号数据占位符:使用“?”作为参数。insert into table_name(name,password,email) values(?,?,?)

绑定参数

往预处理语句绑定参数有三种方法:

bindParam()方法一个一个绑定,绑定完成执行execute()方法使之生效。bindValue()方法一个一个绑定,绑定完成执行execute()方法使之生效。直接使用execute()方法传递一个数组,命名参数使用关联数组,数据占位符使用索引数组。<?php echo "<pre>"; $dbms = "mysql"; $server = "localhost"; $username = "root"; $password = "123456"; $dbname = "account_pdo_db"; $dsn = "$dbms:host=$server;dbname=$dbname"; try { $pdo = new PDO ( $dsn, $username, $password ); echo "PDO连接MySQL数据库服务器成功"; // 数据占位符 $pre = $pdo->prepare("insert into account(username, password, email) values (?,?,?)"); $name = "Peter"; $pwd = "333333"; $pre->bindParam ( 1, $name ); $pre->bindValue ( 2, $pwd ); $pre->bindValue ( 3, "Peter@example.com" ); $pre->execute (); $name = "张三"; $pre->execute (array($name,"1245","zhangsan@example.com")); // 命名参数 $pre = $pdo->prepare("insert into account(username, password, email) values (:name,:pwd,:email)" ); $name = "老王"; $pwd = "00544abc"; $email = "laowang@example.com"; $pre->bindParam ( ":name", $name ); $pre->bindParam ( ":pwd", $pwd ); $pre->bindParam ( ":email", $email ); $pre->execute(); $name = "柴科夫斯基"; $pre->execute(array(":name"=>$name,":pwd"=>"love",":email"=>"abc@abc.com")); $pdo = null; } catch ( PDOException $e ) { echo "PDO连接MySQL数据库服务器失败"; die(); }?>

PHP操作MySQL-其他「程序员培养之路第四十九天」

PHP操作MySQL-访问数据库「程序员培养之路第四十八天」

PHP操作MySQL-介绍和配置「程序员培养之路第四十七天」

展开
收起

PHP操作MySQL-其他「程序员培养之路第四十九天」

解析结果集

PDO(PHP Data Object)

PDO是PHP数据对象的英文缩写,英文全称为PHP Data Object,是又MySQL官方封装的、基于面向对象编程思想的、使用C语言开发的数据库抽象层。

配置PDO

Windows下启动PDO需要在“php.ini”文件中进行配置,添加扩展:

extension=php_pdo.dll

在最新版PHP中,PDO已经默认开启,只需要启动其他数据库扩展即可。配置好这些后重启Apache服务。执行phpinfo()函数,看到PDO配置项,说明开启成功。

MySQL

访问数据库

与mysqli扩展类似,PDO扩展也是实例一个PDO对象,然后可以调用相关方法和属性来执行数据库的操作。

连接服务器

使用PDO与服务器建立连接,需要先使用构造方法来创建PDO实例,PDO的构造方法如下:

_construct(stringdata_source_name [,string user[,string pwd[,array driver_options]]])

datasourcename : 数据源,该参数包括了数据库名,主机名。MySQL数据库的DSN为:“mysql:host=localhost;dbname=account_db; port=3306”

user:数据库服务器用户名

pwd:为数据库服务器密码

数据库连接成功后,将返回一个PDO的实例,连接失败将会抛出一个PDOException异常,通常会使用try/catch语句进行处理。

关闭数据库

要想关闭连接,需要销毁对象以确保所有到它的引用都被删除,可以给变量赋一个NULL。

执行SQL语句

PDO提供了三种执行SQL语句的方法,分别是exec(),query(),预处理语句。

exec()

exec()方法可以执行一条语句,并返回受影响的行数,它的语法格式如下:

int PDO::exec(String sql)

exec()方法通常用于insert into,delete,update等语句。

<?phpecho "<pre>"; $dbms = "mysql"; $server = "localhost"; $username = "root"; $password = "123456"; $dsn = "$dbms:host=$server"; try { $pdo = new PDO ( $dsn, $username, $password ); echo "PDO连接MySQL数据库服务器成功"; print ($pdo->exec ( "create database account_pdo_db" )) ; print ($pdo->exec ( "use account_pdo_db" )) ; print ($pdo->exec ( "set names utf8" )) ; print ($pdo->exec ( "create table account(id int auto_increment primary key, username varchar(50) not null, password varchar(50) not null, email varchar(50) not null)" )) ; print ($pdo->exec ( "insert into account(username, password, email) values ('Jack', '123456', 'jack@example.com')" )) ; print ($pdo->exec ( "insert into account(username, password, email) values ('Lucy', '123456', 'lucy@example.com')" )) ; $pdo = null; } catch ( PDOException $e ) { echo "PDO连接MySQL数据库服务器失败"; die (); }?>

query()

query()方法不同于exec(),通常用于select语句中,它的返回值是PDOStatement的实例,是POD里的结果集。它的语法如下:

PDOStatement PDO::query(String sql)

<?phpecho "<pre>";$dbms = "mysql";$server = "localhost";$username = "root";$password = "123456";$dbname = "account_pdo_db";$dsn = "$dbms:host=$server;dbname=$dbname";try {$pdo = new PDO ( $dsn, $username, $password ); echo "<p>PDO连接MySQL数据库服务器成功</p>"; $result = $pdo->query ( "select * from account" ); foreach ( $result as $row ) { var_dump ( $row ); } $pdo = null;} catch ( PDOException $e ) { echo "PDO连接MySQL数据库服务器失败"; die ();}?>

展开
收起

PHP对文件读取写入的基本操作知识点,另附id传参教学!

知识点:

涉及函数:

//打开文件fopen(string $filename,string $mode); //给文件写入内容fwrite($fp, $a); //关闭资源fclose($fp);//从文件指针中读入一行并解析 CSV 字段fgetcsv(resource $handle);本文只讲解案例和抽选相关函数讲解,更多知识点移步:菜鸟教程

如上图案例结构图,按照阁主流程和思路将讲解如何创建msg.txt文本文档,并使用PHP对文档进行写入和读取操作,最后输出可视化展现给用户。

1.创建并打开msg.txt文档

文档存放与根目录下的files文件夹下。

//a参数为写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 $fp= fopen('./files/msg.txt','a');网而打开write.php会发现files文件夹下多出msg.txt空白内容的文档。

2.前端提交留言:

这里写了一个简单的前台提交表单页面。下列代码会将表单信息以POST提交方式提交往write.php进行后续写入处理。

<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>添加留言</title></head><body><form action="write.php" method="post"> 标题: <input type="text" name="title" id=""><br /> 内容: <textarea name="content" id="" cols="30" rows="10"></textarea><br /> <input type="submit" value="提交"></form></body></html>效果:

3.将前台提交留言写入msg.txt。

//拼接写入内容$a=$_POST['title'].','.$_POST['content']."\n";//打开文件$fp= fopen('./files/msg.txt','a');//沿着资源写入内容fwrite($fp, $a);//关闭资源fclose($fp);//友好提示echo 'Is OK';效果:这里只查看文档内容情况。

4.读取文档内容。

使用while循环输出文档内容。fgetcsv函数依据文档内的逗号来隔开字符并以数组形式存放。

$fp = fopen('./files/msg.txt', 'r');echo '<table border="1">';//fgetcsv函数指针识别到最后没内容会返回false.while (($row = fgetcsv($fp)) != false) { echo '<tr>'; echo '<td>' . $row[0] . '</td>'; echo '<td>' . $row[1] . '</td>'; echo '</tr>';}echo '</table>';fclose($fp);效果:

5.id传参教学。

其实教程到第4步应该结束了,但是想一想最后展示的留言内容太多,不利于用户自己查看,随后补了一个id传参知识点。使用id传参可以准确的让PHP帮我们处理并输出单条留言信息。

在第四步的基础上改写一下,也就是加入了<a>标签进行传参进行跳转相应留言字段。

$fp = fopen('./files/msg.txt', 'r');echo '<table border="1">';$tid = 1;while (($row = fgetcsv($fp)) != false) { echo '<tr>'; echo '<td><a href="'.'read2.php?tid='.$tid.'">' . $row[0] . '</td>'; echo '<td>' . $row[1] . '</td>'; echo '</tr>'; $tid = $tid + 1;}echo '</table>';接下来新建read2.php文件,键入下列代码,用于接收read.php发过来的参数并处理展现单条留言给用户。

$fp = fopen('./files/msg.txt', 'r');$tid = $_GET['tid'];$num = 1;while (($row = fgetcsv($fp)) != false) { if ($num == $tid){ echo '<h1>'.$row[0].'</h1>'; echo '<p>'.$row[1].'</p>'; } $num = $num+1;}fclose($fp);效果:

结束:

最终效果演示:

项目源码:

蓝奏云提供下载:

file_demo1.zip大小:2.2 K

已经过安全软件检测无毒,请您放心下载。

展开
收起

PHP操作PDO、预处理以及事务

PDO为PHP访问各类数据库定义了一个轻量级一致性的接口,无论什么数据库,都可以通过一致的方法执行查询和获取数据,而不用考虑不同数据库之间的差异,大大简化了数据库操作。使用PDO可以支持mysql、postgresql、oracle、mssql等多种数据库。

本文以基础讲解常用的PHP以PDO方式操作MySQL,包括常用的CURD语句执行,以及预处理语句和事务的应用。虽然很多朋友使用开发框架封装好了数据库操作层,或者使用ORM等不直接接触SQL语句,但是在一些小项目中可能会用到原生的数据库操作,所以虽然是基础但是很有用。

准备

我们准备一张mysql数据表mycomments,这是一张常见的评论表。

连接

首先创建PDO对象,建立与数据库服务器的连接。

PDO::setAttribute()用于设置属性,如上面的代码中就设置了使用异常模式处理错误。

查询

如果我们不使用预处理语句,可以直接使用query()和exec()方法执行sql语句。

而实际开发中我们最常用的是预处理语句,简单的说预处理语句预先将sql命令分析一次,可以多次执行,提高了处理效率,而且能有效防止SQL注入。在执行单个查询时快于直接使用query()或exec()的方法,速度快且安全,所以强烈推荐使用预处理语句。

使用预处理语句处理时配套的方法是prepare()和execute()。

我们用预处理语句来查询符合条件的数据记录:

我们在sql语句中使用问号(?)参数作为占位符,使用bindParam()可以设置绑定参数值。

不过,如果有很多参数需要传递,我们最常用的是这样写:

在execute()方法中加入参数占位符数组,不使用?占位符可能更直观点。

fetch()返回查询结果中的一行数据,数据以数组形式返回,该方法可以带参数,其中参数默认为 PDO::FETCH_BOTH,即返回一个索引为结果集列名和以0开始的列号的数组,而常用的参数PDO::FETCH_ASSOC则返回一个索引为结果集列名的数组。

fetchAll()可以获取结果集中的所有行,并赋给返回的二维数组。和fetch()一样也可以带参数。

如查询表中用户id为2的所有数据,可能会有多行结果:

打印$row结果看下,是不是一个二维数组?

插入

最常用的插入数据表的写法,如果有自增长id(一般必须有),使用lastInsertId()可以获取到插入成功后的id。

更新

使用预处理更新数据,rowCount()返回影响行数,大于0即表示执行成功的记录数。

删除

对于只有一个参数需要绑定的,可以使用问号?占位符。删除后同样使用rowCount()返回影响行数,大于0表示执行成功。

事务

事务是确保数据库一致的机制,是一个或一系列的查询,作为一个单元的一组有序的数据库操作。如果组中的所有SQL语句都操作成功,则认为事务成功,事务则被提交。如果在事务的组中只有一个环节操作失败,事务也不成功,则整个事务将被回滚,该事务中所有操作都被取消。事务在开发中也经常用到,因为很多业务过程都包括多个步骤,如果任何一个步骤失败,则所有步骤都不应发生。

值得注意的是,如果要用到事务处理功能,你的MySQL应该使用InnoDB引擎或者其他支持事务的引擎,切不可以使用MyISAM引擎。

来看PDO事务处理实例:

上述代码中首先是启动一个事务,然后依次执行三条sql,然后提交事务。细心的同学可能会发现,在第2条sql中查询条件sid=2有误,因为我们在前面创建mycomments表的时候没有sid这个字段,所以在执行到第2条sql时就会出错,这个时候会抛出异常,使用try{}cache(){}语句即可捕获异常,于是就执行了回滚事务rollBack(),而并没有提交事务。换句话说就是上面的代码虽然第一条sql执行完了,但是最终执行不成功,数据库没有任何写入和更新。

展开
收起

php怎么操作mysqli

之前写了篇文章介绍php操作mysql有网友给小编留言说现在都流行的是mysqli链接数据库。小编今天介绍一下php操作mysqli的常见语法。

和mysql有比较多类似的地方。我们先看看mysqli怎么连接数据库。

我们先定义几个常量,数据库账户,数据库密码,还有要连接的数据库。

php怎么操作mysqli

然后运行一下代码,查看是否得到需要的数据

mysqli查询结果

这里我们可以看到基本操作很简单。类似mysql实例化$mysqli=new Mysqli(HOST,USER,PWD,DB);就可以了

我们看看常见的语法

mysqli_result类

我们可以都试试看得出什么数据,方便在自己项目中运用到

$row=$result->fetch_row();

//$row=$result->fetch_array();

//$row=$result->fetch_assoc();

//$row=$result->fetch_object();

//释放结果集

$result->free();

//$result->free_result();

//$result->close();

//关闭连接

$mysqli->close();

然后释放资源,关闭连接。是不是也没那么难呢

展开
收起

PHP文件操作详解

一、打开关闭文件

1、fopen()函数打开文件,它有两个参数第一个是文件名,第二个是打开方式。

// 获取文件路径 $filePath = "psg.txt"; // 打开文件,将资源绑定到一个流或者句柄,绑定之后,脚本就可以通过句柄与此资源交互。 $fileHandle = fopen($filePath, "a+");

fopen()函数第二个参数可能的值

mode

说明

r只读方式打开,文件从头开始读。

r+读写方式打开,文件从头开始读写。

w只写方式打开文件,从文件开头开始写。如果文件已经存在,将文件指针指向文件头并将文件大小截为零,即删除所有文件已有的内容,如果文件不存在,函数将创建这个文件。

w+读写方式打开文件,如果文件已经存在,将文件指针指向文件头并将文件大小截为零。即删除所有文件已有的内容,如果文件不存在,函数将创建这个文件。

a写入方式打开,将文件指针指向文件末尾。如果该文件已有内容,将从文件末尾开始追加,如果该文件不存在,函数将创建这个文件。

a+读写方式打开,将文件指针指向文件末尾。如果该文件已有内容,将从文件末尾开始追加或者读,如果该文件不存在,函数将创建这个文件。

作者:XZ阳光小熊链接:https://www.jianshu.com/p/e845ab9e85c6來源:简书简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

展开
收起