1、和mysql 扩展 库的区别: (1 安全性、稳定性更高 (2 提供了 面向 对象 和 面向 过程两种风格 2、php.ini 中的 extension=php_mysqli.dll 解除封印 3、 面向 对象 :查询列表 1 ? php 2 3 // mysqli 操作 数据( 面向 对象 风格) 4 5 # 1、创建Mysql 对
1、和mysql扩展库的区别:
(1 安全性、稳定性更高
(2 提供了面向对象和面向过程两种风格
2、php.ini 中的 extension=php_mysqli.dll 解除封印
立即学习“PHP免费学习笔记(深入)”;
3、面向对象:查询列表
<span> 1</span> <?<span>php
</span><span> 2</span>
<span> 3</span> <span>//</span><span>mysqli <strong>操作</strong>数据(<strong>面向</strong><strong>对象</strong>风格)</span>
<span> 4</span>
<span> 5</span> <span>#</span><span>1、创建Mysql<strong>对象</strong></span>
<span> 6</span>
<span> 7</span> <span>$mysqli</span>=<span>new</span> MySQLi("127.0.0.1","root","daomul","test"<span>);
</span><span> 8</span> <span>if</span>(!<span>$mysqli</span><span>)
</span><span> 9</span> <span> {
</span><span>10</span> <span>die</span>("连接失败!".<span>$mysqli</span>-><span>connect_error);
</span><span>11</span> <span> }
</span><span>12</span>
<span>13</span> <span>#</span><span>2、<strong>操作</strong><strong>数据库</strong></span>
<span>14</span>
<span>15</span> <span>$sql</span>="select * from user1"<span>;
</span><span>16</span> <span>$res</span>=<span>$mysqli</span>->query(<span>$sql</span><span>);
</span><span>17</span> <span>#</span><span>3、处理结果</span>
<span>18</span>
<span>19</span> <span>while</span>(<span>$row</span>=<span>$res</span>-><span>fetch_row())
</span><span>20</span> <span> {
</span><span>21</span> <span>foreach</span>(<span>$row</span> <span>as</span> <span>$key</span>=> <span>$val</span><span>)
</span><span>22</span> <span> {
</span><span>23</span> <span>echo</span> "-- <span>$val</span>"<span>;
</span><span>24</span> <span> }
</span><span>25</span> <span>echo</span> "<br/>"<span>;
</span><span>26</span> <span> }
</span><span>27</span> <span>#</span><span>4、关闭资源</span>
<span>28</span> <span>$res</span>->free();<span>//</span><span>释放内存</span>
<span>29</span> <span>$mysqli</span>->close();<span>//</span><span>关闭连接</span>
<span>30</span>
<span>31</span> ?>4、面向对象:封装类后实现
4.1 Sqliconnect.class.php
<span> 1</span> <?<span>php
</span><span> 2</span>
<span> 3</span> <span>Class</span><span> Sqliconnect
</span><span> 4</span> <span> {
</span><span> 5</span> <span>private</span> <span>$mysqli</span><span>;
</span><span> 6</span> <span>private</span> <span>static</span> <span>$host</span>="127.0.0.1"<span>;
</span><span> 7</span> <span>private</span> <span>static</span> <span>$root</span>="root"<span>;
</span><span> 8</span> <span>private</span> <span>static</span> <span>$password</span>="daomul"<span>;
</span><span> 9</span> <span>private</span> <span>static</span> <span>$db</span>="test"<span>;
</span><span>10</span>
<span>11</span> <span>function</span><span> __construct()
</span><span>12</span> <span> {
</span><span>13</span> <span>$this</span>->mysqli=<span>new</span> MySQLi(self::<span>$host</span>,self::<span>$root</span>,self::<span>$password</span>,self::<span>$db</span><span>);
</span><span>14</span> <span>if</span>(!<span>$this</span>-><span>mysqli)
</span><span>15</span> <span> {
</span><span>16</span> <span>die</span>("<strong>数据库</strong>连接失败!".<span>$this</span>->mysqli-><span>connect_error);
</span><span>17</span> <span> }
</span><span>18</span>
<span>19</span> <span>$this</span>->mysqli->query("set names utf8"<span>);
</span><span>20</span> <span> }
</span><span>21</span>
<span>22</span> <span>//</span><span>查询<strong>操作</strong></span>
<span>23</span> <span>public</span> <span>function</span> excute_dql(<span>$sql</span><span>)
</span><span>24</span> <span> {
</span><span>25</span> <span>$res</span>=<span>$this</span>->mysqli->query(<span>$sql</span>) or <span>die</span>("数据查询失败".<span>$this</span>->mysqli-><span>error);
</span><span>26</span> <span>return</span> <span>$res</span><span>;
</span><span>27</span>
<span>28</span> <span> }
</span><span>29</span>
<span>30</span> <span>//</span><span>增删改<strong>操作</strong></span>
<span>31</span> <span>public</span> <span>function</span> excute_dml(<span>$sql</span><span>)
</span><span>32</span> <span> {
</span><span>33</span> <span>$res</span>=<span>$this</span>->mysqli->query(<span>$sql</span>) or <span>die</span>("数据<strong>操作</strong>失败".<span>$this</span>->mysqli-><span>error);
</span><span>34</span> <span>if</span>(!<span>$res</span><span>)
</span><span>35</span> <span> {
</span><span>36</span> <span>echo</span> "数据<strong>操作</strong>失败"<span>;
</span><span>37</span> <span> }
</span><span>38</span> <span>else</span>
<span>39</span> <span> {
</span><span>40</span> <span>if</span>(<span>$this</span>->mysqli->affected_rows>0<span>)
</span><span>41</span> <span> {
</span><span>42</span> <span>echo</span> "<strong>操作</strong>成功!"<span>;
</span><span>43</span> <span> }
</span><span>44</span> <span>else</span>
<span>45</span> <span> {
</span><span>46</span> <span>echo</span> "0行数据受影响!"<span>;
</span><span>47</span> <span> }
</span><span>48</span> <span> }
</span><span>49</span> <span> }
</span><span>50</span>
<span>51</span> <span> }
</span><span>52</span> ?>4.2 调用页面startsqli.php
<span> 1</span> <?<span>php
</span><span> 2</span>
<span> 3</span> <span>//</span><span>mysqli <strong>操作</strong>数据(<strong>面向</strong><strong>对象</strong>风格)</span>
<span> 4</span>
<span> 5</span>
<span> 6</span> <span>require_once</span> "Sqliconnect.class.php"<span>;
</span><span> 7</span>
<span> 8</span> <span>$Sqliconnect</span>=<span>new</span><span> Sqliconnect();
</span><span> 9</span>
<span>10</span> <span>//</span><span>$sql="insert into user1(name,password,email,age) values('帝都',md5('gg'),'sd@sohu.com',23)";
</span><span>11</span> <span> //$sql="delete from user1 where id=11";
</span><span>12</span> <span> //$res=$Sqliconnect->excute_dml($sql);</span>
<span>13</span>
<span>14</span> <span>$sql</span>="select name from user1;"<span>;
</span><span>15</span> <span>$res</span>=<span>$Sqliconnect</span>->excute_dql(<span>$sql</span><span>);
</span><span>16</span> <span>while</span>(<span>$row</span>=<span>$)
</span><span>17</span>
<span>18</span> <span>$res</span>-><span>free();
</span><span>19</span> ?>
5、同时执行多条数据库语句 multiQuery.php
<span> 1</span> <?<span>php
</span><span> 2</span>
<span> 3</span> <span>//</span><span>mysqli <strong>操作</strong>数据(<strong>面向</strong><strong>对象</strong>风格)</span>
<span> 4</span>
<span> 5</span> <span>#</span><span>1、创建Mysql<strong>对象</strong></span>
<span> 6</span>
<span> 7</span> <span>$mysqli</span>=<span>new</span> MySQLi("127.0.0.1","root","daomul","test"<span>);
</span><span> 8</span> <span>if</span>(!<span>$mysqli</span><span>)
</span><span> 9</span> <span> {
</span><span>10</span> <span>die</span>("连接失败!".<span>$mysqli</span>-><span>connect_error);
</span><span>11</span> <span> }
</span><span>12</span>
<span>13</span> <span>#</span><span>2、<strong>操作</strong><strong>数据库</strong></span>
<span>14</span>
<span>15</span> <span>$sqls</span>="select * from user1;"<span>;
</span><span>16</span> <span>$sqls</span>.="select * from user1"<span>;
</span><span>17</span>
<span>18</span> <span>#</span><span>3、处理结果</span>
<span>19</span>
<span>20</span> <span>if</span>(<span>$res</span>=<span>$mysqli</span>->multi_query(<span>$sqls</span><span>))
</span><span>21</span> <span> {
</span><span>22</span> <span>echo</span> "211"<span>;
</span><span>23</span> <span>do</span>
<span>24</span> <span> {
</span><span>25</span> <span>//</span><span>从mysqli连续取出第一个结果集</span>
<span>26</span> <span>$result</span>=<span>$mysqli</span>-><span>store_result();
</span><span>27</span>
<span>28</span> <span>//</span><span>显示mysqli result<strong>对象</strong></span>
<span>29</span> <span>while</span>(<span>$row</span>=<span>$result</span>-><span>fetch_row())
</span><span>30</span> <span> {
</span><span>31</span> <span>foreach</span>(<span>$row</span> <span>as</span> <span>$key</span>=> <span>$val</span><span>)
</span><span>32</span> <span> {
</span><span>33</span> <span>echo</span> "-- <span>$val</span>"<span>;
</span><span>34</span> <span> }
</span><span>35</span> <span>echo</span> "<br/>"<span>;
</span><span>36</span> <span> }
</span><span>37</span>
<span>38</span> <span>$result</span>->free();<span>//</span><span>及时释放当前结果集,并进入下一结果集
</span><span>39</span>
<span>40</span> <span> //判断是否有下一个结果集</span>
<span>41</span> <span>if</span>(!<span>$mysqli</span>-><span>more_results())
</span><span>42</span> <span> {
</span><span>43</span> <span>break</span><span>;
</span><span>44</span> <span> }
</span><span>45</span> <span>echo</span> "<br/>************新的结果集**************"<span>;
</span><span>46</span>
<span>47</span> }<span>while</span>(<span>$mysqli</span>-><span>next_result());
</span><span>48</span> <span> }
</span><span>49</span>
<span>50</span> <span>#</span><span>4、关闭资源</span>
<span>51</span> <span>$mysqli</span>->close();<span>//</span><span>关闭连接 </span>
<span>52</span>
<span>53</span>
<span>54</span> ?>
6、事务控制
<span> 1</span> <?<span>php
</span><span> 2</span>
<span> 3</span> <span>//</span><span>mysqli <strong>操作</strong>数据(<strong>面向</strong><strong>对象</strong>风格)
</span><span> 4</span>
<span> 5</span>
<span> 6</span> <span> // <strong>数据库</strong> :create table account(id int primary key,balance float);</span>
<span> 7</span>
<span> 8</span> <span>$mysqli</span>=<span>new</span> MySQLi("127.0.0.1","root","daomul","test"<span>);
</span><span> 9</span> <span>if</span>(!<span>$mysqli</span><span>)
</span><span>10</span> <span> {
</span><span>11</span> <span>die</span>("<strong>数据库</strong>连接失败!".<span>$mysqli</span>-><span>connect_error);
</span><span>12</span> <span> }
</span><span>13</span> <span>//</span><span>将提交设为false</span>
<span>14</span> <span>$mysqli</span>->autocommit(<span>false</span><span>);
</span><span>15</span>
<span>16</span> <span>$sql1</span>="update account set balance=balance+1 where id=1;";<span>//</span><span>没错的语句</span>
<span>17</span> <span>$sql2</span>="update accounterror2 set balance=balance-1 where id=2";<span>//</span><span>有错的语句</span>
<span>18</span>
<span>19</span> <span>$res1</span>=<span>$mysqli</span>->query(<span>$sql1</span><span>);
</span><span>20</span> <span>$res2</span>=<span>$mysqli</span>->query(<span>$sql2</span><span>);
</span><span>21</span>
<span>22</span> <span>if</span>(!<span>$res1</span>||!<span>$res2</span><span>)
</span><span>23</span> <span> {
</span><span>24</span> <span>//</span><span>回滚:其中一个不成功即回滚不提交</span>
<span>25</span> <span>echo</span> "有错,回滚,请重新提交!"<span>;
</span><span>26</span> <span>$mysqli</span>->rollback();<span>//</span><span>die("<strong>操作</strong>失败!".$mysqli->error);</span>
<span>27</span> <span> }
</span><span>28</span> <span>else</span>
<span>29</span> <span> {
</span><span>30</span> <span>//</span><span>所有均成功则提交</span>
<span>31</span> <span>echo</span> "所有提交成功!"<span>;
</span><span>32</span> <span>$mysqli</span>-><span>commit();
</span><span>33</span> <span> }
</span><span>34</span>
<span>35</span> <span>$mysqli</span>-><span>close();
</span><span>36</span> <span>/*</span>
<span>37</span> <span> 1、 start transaction; 开启<strong>事务</strong>
</span><span>38</span> <span> 2、svaepoint a; 做保存点
</span><span>39</span> <span> 3、执行<strong>操作</strong>1;
</span><span>40</span> <span> 4、 svaepoint b;
</span><span>41</span> <span> 5、执行<strong>操作</strong>2;
</span><span>42</span> <span> ...
</span><span>43</span> <span> 6、rollback to a/b; 回滚或者是提交
</span><span>44</span> <span> 7、commit
</span><span>45</span>
<span>46</span> <span> <strong>事务</strong><strong>控制</strong>特点acid 原子性/一致性/隔离性/持久性
</span><span>47</span> <span>*/</span>
<span>48</span> ?>7、预处理技术
主要在连接和编译过程精简,还可以SQL防止注入
7.1 预编译插入多个数据
<span> 1</span> <?<span>php
</span><span> 2</span>
<span> 3</span> <span>//</span><span>mysqli 预<strong>编译</strong>演示</span>
<span> 4</span>
<span> 5</span> <span>#</span><span>1、创建mysqli<strong>对象</strong></span>
<span> 6</span> <span>$mysqli</span>=<span>new</span> MySQLi("127.0.0.1","root","daomul","test"<span>);
</span><span> 7</span> <span>if</span>(!<span>$mysqli</span><span>)
</span><span> 8</span> <span> {
</span><span> 9</span> <span>die</span>("<strong>数据库</strong>连接失败!".<span>$mysqli</span>-><span>connect_error);
</span><span>10</span> <span> }
</span><span>11</span>
<span>12</span> <span>#</span><span>2、创建预<strong>编译</strong><strong>对象</strong></span>
<span>13</span> <span>$sql</span>="insert into user1(name,password,email,age) values(?,?,?,?);";<span>//</span><span>暂时不赋值,用问号代替</span>
<span>14</span> <span>$stmt</span>=<span>$mysqli</span>->prepare(<span>$sql</span>) or <span>die</span>(<span>$mysqli</span>-><span>error);
</span><span>15</span>
<span>16</span> <span>/*</span><span>*******************************可重复执行时需要的代码start********************************</span><span>*/</span>
<span>17</span> <span>#</span><span>3、绑定参数</span>
<span>18</span> <span>$name</span>='小明5'<span>;
</span><span>19</span> <span>$password</span>='34f'<span>;
</span><span>20</span> <span>$email</span>='ssd@qq.com'<span>;
</span><span>21</span> <span>$age</span>='1'<span>;
</span><span>22</span>
<span>23</span> <span>#</span><span>4、参数赋值(第一个参数指代参数的类型缩写,string-s,int-i,double-d,bool-b</span>
<span>24</span> <span>$stmt</span>->bind_param("sssi",<span>$name</span>,<span>$password</span>,<span>$email</span>,<span>$age</span><span>);
</span><span>25</span>
<span>26</span> <span>#</span><span>5、执行代码(返回布尔类型)</span>
<span>27</span> <span>$flag</span>=<span>$stmt</span>-><span>execute();
</span><span>28</span>
<span>29</span> <span>/*</span><span>*******************************可重复执行时需要的代码 end***********************************</span><span>*/</span>
<span>30</span>
<span>31</span> <span>#</span><span>6、结果以及释放</span>
<span>32</span>
<span>33</span> <span>if</span>(!<span>$flag</span><span>)
</span><span>34</span> <span> {
</span><span>35</span> <span>die</span>("<strong>操作</strong>失败".<span>$stmt</span>-><span>error);
</span><span>36</span> <span> }
</span><span>37</span> <span>else</span>
<span>38</span> <span> {
</span><span>39</span> <span>echo</span> "<strong>操作</strong>成功!"<span>;
</span><span>40</span> <span> }
</span><span>41</span>
<span>42</span> <span>$mysqli</span>-><span>close();
</span><span>43</span>
<span>44</span>
<span>45</span> ?>7.2 预编译查询多个数据
<span> 1</span> <?<span>php
</span><span> 2</span>
<span> 3</span> <span>//</span><span>mysqli 预<strong>编译</strong>演示</span>
<span> 4</span>
<span> 5</span> <span>#</span><span>1、创建mysqli<strong>对象</strong></span>
<span> 6</span> <span>$mysqli</span>=<span>new</span> MySQLi("127.0.0.1","root","daomul","test"<span>);
</span><span> 7</span> <span>if</span>(!<span>$mysqli</span><span>)
</span><span> 8</span> <span> {
</span><span> 9</span> <span>die</span>("<strong>数据库</strong>连接失败!".<span>$mysqli</span>-><span>connect_error);
</span><span>10</span> <span> }
</span><span>11</span>
<span>12</span> <span>/*</span><span>*******************************可重复执行时需要的代码 start******************************</span><span>*/</span>
<span>13</span>
<span>14</span> <span>#</span><span>2、创建预<strong>编译</strong><strong>对象</strong></span>
<span>15</span> <span>$sql</span>="select id,name,email from user1 where id>?;";<span>//</span><span>id,name,email和后面的结果集bind_result()对应</span>
<span>16</span> <span>$stmt</span>=<span>$mysqli</span>->prepare(<span>$sql</span>) or <span>die</span>(<span>$mysqli</span>-><span>error);
</span><span>17</span>
<span>18</span> <span>#</span><span>3、绑定参数</span>
<span>19</span> <span>$id</span>=5<span>;
</span><span>20</span>
<span>21</span> <span>#</span><span>4、参数赋值(第一个参数指代参数的类型缩写,string-s,int-i,double-d,bool-b</span>
<span>22</span> <span>$stmt</span>->bind_param("i",<span>$id</span>);<span>//</span><span>绑定参数</span>
<span>23</span> <span>$stmt</span>->bind_result(<span>$id</span>,<span>$name</span>,<span>$email</span>);<span>//</span><span>绑定结果集</span>
<span>24</span>
<span>25</span> <span>#</span><span>5、执行代码(返回布尔类型)</span>
<span>26</span> <span>$stmt</span>-><span>execute();
</span><span>27</span>
<span>28</span> <span>#</span><span>6、取出结果集显示</span>
<span>29</span> <span>while</span>(<span>$stmt</span>-><span>fetch())
</span><span>30</span> <span> {
</span><span>31</span> <span>echo</span> "<br/><span>$id</span>--<span>$name</span>--<span>$email</span>"<span>;
</span><span>32</span> <span> }
</span><span>33</span>
<span>34</span> <span>/*</span><span>*******************************可重复执行时需要的代码 end******************************</span><span>*/</span>
<span>35</span>
<span>36</span> <span>#</span><span>7、结果以及释放
</span><span>37</span>
<span>38</span> <span> //释放结果</span>
<span>39</span> <span>$stmt</span>-><span>free_result();
</span><span>40</span> <span>//</span><span>关闭预<strong>编译</strong>语句</span>
<span>41</span> <span>$stmt</span>-><span>close();
</span><span>42</span> <span>//</span><span>关闭<strong>数据库</strong>连接</span>
<span>43</span> <span>$mysqli</span>-><span>close();
</span><span>44</span>
<span>45</span>
<span>46</span> ?>
8、其他函数
(1 获取行数和列数 num_rows field_count
(2 获取结果集的一列 :表头 例如
$result=$mysqli->query();
$result->fetch_field();
(3 取出数据
$row=$result->fetch_row(); //获得每一行数据
再通过 foreach($row as $val){} 取出每一个数据
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号