美文网首页
PHP 数据库操作

PHP 数据库操作

作者: 敬业福 | 来源:发表于2016-03-28 11:28 被阅读338次

    PHP支持哪些数据库

    PHP通过安装相应的扩展来实现数据库操作,现代应用程序的设计离不开数据库的应用,当前主流的数据库有MsSQL,MySQL,Sybase,Db2,Oracle,PostgreSQL,Access等,这些数据库PHP都能够安装扩展来支持,一般情况下常说的LAMP架构指的是:Linux、Apache、Mysql、PHP,因此Mysql数据库在PHP中的应用非常广泛

    <?php
    if (function_exists('mysql_connect')) {
        echo 'Mysql扩展已经安装';
    }
    

    数据库扩展

    PHP中一个数据库可能有一个或者多个扩展,其中既有官方的,也有第三方提供的。像Mysql常用的扩展有原生的mysql库,也可以使用增强版的mysqli扩展,还可以使用PDO进行连接与操作。

    不同的扩展提供基本相近的操作方法,不同的是可能具备一些新特性,以及操作性能可能会有所不同。

    • mysql扩展进行数据库连接的方法:
    $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password');
    
    • mysqli扩展:
    $link = mysqli_connect('mysql_host', 'mysql_user', 'mysql_password');
    
    • PDO扩展:
    $dsn = 'mysql:dbname=testdb;host=127.0.0.1';
    $user = 'dbuser';
    $password = 'dbpass';
    $dbh = new PDO($dsn, $user, $password);
    

    示例

    <?php
    $link = mysql_connect('127.0.0.1', 'code1', '') or die('数据库连接失败');
    mysql_select_db('code1');
    mysql_query("set names 'utf8'");
    $result = mysql_query('select * from user limit 1');
    $row = mysql_fetch_assoc($result);
    print_r($row);
    

    连接数据库

    PHP要对数据库进行操作,首先要做的是与数据库建立连接,通常我们使用mysql_connect函数进行数据库连接,该函数需要指定数据库的地址,用户名及密码。

    $host = 'localhost';
    $user = 'code1';
    $pass = '';
    $link = mysql_connect($host, $user, $pass);
    

    PHP连接数据库的方式类似于直接在命令行下通过进行连接,类似:mysql -hlocalhost -ucode1 -p,当连接成功以后,我们需要选择一个操作的数据库,通过mysql_select_db函数来选择数据库。

    mysql_select_db('code1');
    

    通常我们会先设置一下当前连接使用的字符编码,一般的我们会使用utf8编码。

    mysql_query("set names 'utf8'");
    

    通过上面的步骤,我们就与数据库建立了连接,可以进行数据操作了。

    <?php
    $host = '127.0.0.1';
    $user = 'code1';
    $pass = '';
    //在这里编写数据库连接代码
    mysql_connect($host,$user,$pass);
    mysql_select_db('code1');
    mysql_query("set names 'utf8'");
    

    执行MySQL查询

    在数据库建立连接以后就可以进行查询,采用mysql_query加sql语句的形式向数据库发送查询指令。

    $res = mysql_query('select * from user limit 1');
    

    对于查询类的语句会返回一个资源句柄(resource),可以通过该资源获取查询结果集中的数据。

    $row = mysql_fetch_array($res);
    var_dump($row);
    

    默认的,PHP使用最近的数据库连接执行查询,但如果存在多个连接的情况,则可以通过参数指令从那个连接中进行查询。

    $link1 = mysql_connect('127.0.0.1', 'code1', '');
    $link2 = mysql_connect('127.0.0.1', 'code1', '', true); //开启一个新的连接
    $res = mysql_query('select * from user limit 1', $link1); //从第一个连接中查询数据
    

    插入新数据到MySQL中

    当我们了解了如何使用mysql_query进行数据查询以后,那么类似的,插入数据其实也是通过执行一个sql语句来实现,例如:

    $sql = "insert into user(name, age, class) values('李四', 18, '高三一班')";
    mysql_query($sql); //执行插入语句
    

    通常数据都是存储在变量或者数组中,因此sql语句需要先进行字符串拼接得到。

    $name = '李四';
    $age = 18;
    $class = '高三一班';
    $sql = "insert into user(name, age, class) values('$name', '$age', '$class')";
    mysql_query($sql); //执行插入语句
    

    在mysql中,执行插入语句以后,可以得到自增的主键id,通过PHP的mysql_insert_id函数可以获取该id。

    $uid = mysql_insert_id();
    

    这个id的作用非常大,通常可以用来判断是否插入成功,或者作为关联ID进行其他的数据操作。

    完整示例:

    <?php
    //连接数据库
    mysql_connect('127.0.0.1', 'code1', '');
    mysql_select_db('code1');
    mysql_query("set names 'utf8'");
    //已知的数据变量有
    $name = '李四';
    $age = 18;
    $class = '高三一班';
    //在这里进行数据查询
    $sql = "insert into user(name, age, class) values('$name', '$age', '$class')";
    mysql_query($sql); //执行插入语句
    $uid = mysql_insert_id();
    echo $uid;
    

    取得数据查询结果

    PHP操作数据库跟MySql客户端上操作极为相似,先进行连接,然后执行sql语句,再然后获取我们想要的结果集。

    PHP有多个函数可以获取数据集中的一行数据,最常用的是mysql_fetch_array,可以通过设定参数来更改行数据的下标,默认的会包含数字索引的下标以及字段名的关联索引下标。

    $sql = "select * from user limit 1";
    $result = mysql_query($sql);
    $row = mysql_fetch_array($result);
    

    可以通过设定参数MYSQL_NUM只获取数字索引数组,等同于mysql_fetch_row函数,如果设定参数为MYSQL_ASSOC则只获取关联索引数组,等同于mysql_fetch_assoc函数。

    $row = mysql_fetch_row($result);
    $row = mysql_fetch_array($result, MYSQL_NUM); 
    // ------ 这两个方法获取的数据是一样的
    $row = mysql_fetch_assoc($result);
    $row = mysql_fetch_array($result, MYSQL_ASSOC);
    

    如果要获取数据集中的所有数据,我们通过循环来遍历整个结果集。

    $data = array();
    while ($row = mysql_fetch_array($result)) {
        $data[] = $row;
    }
    

    查询分页数据

    在实际应用中,我们并不希望一次性获取数据表中的所有数据,那样性能会非常的低,因此会使用翻页功能,每页仅显示10条或者20条数据。

    通过mysql的limit可以很容易的实现分页,limit m,n表示从m行后取n行数据,在PHP中我们需要构造m与n来实现获取某一页的所有数据。

    假定当前页为$page,每页显示$pagesize条数据,那么offset为当前页前面所有的数据,既$offset = ($page-1) * $pagesize,在知道了翻页原理以后,那么我们很容易通过构造SQL语句在PHP中实现数据翻页。

    <?php
    //连接数据库
    mysql_connect('127.0.0.1', 'code1', '');
    mysql_select_db('code1');
    mysql_query("set names 'utf8'");
    //预设翻页参数
    $page = 2;
    $pagesize = 2;
    //在这里构建分页查询
    $offset = ($page - 1) * $pagesize;
    $sql = "select * from user limit $offset, $pagesize";
    //获取翻页数据
    $result = mysql_query($sql);
    $data = array();
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        $data[] = $row;
    }
    echo '<pre>';
    print_r($data);
    echo '</pre>';
    

    更新与删除数据

    数据的更新与删除相对比较简单,只需要构建好相应的sql语句,然后调用mysql_query执行就能完成相应的更新与删除操作。

    $sql = "update user set name = '曹操' where id=2 limit 1";
    if (mysql_query($sql)) {
        echo '更新成功';
    }
    

    同样的删除可以使用类似以下的代码:

    $sql = "delete from user where id=2 limit 1";
    if (mysql_query($sql)) {
        echo '删除成功';
    }
    

    对于删除与更新操作,可以通过mysql_affected_rows函数来获取更新过的数据行数,如果数据没有变化,则结果为0。

    $sql = "update user set name = '曹操' where id=2 limit 1";
    if (mysql_query($sql)) {
        echo mysql_affected_rows();
    }
    

    相关文章

      网友评论

          本文标题:PHP 数据库操作

          本文链接:https://www.haomeiwen.com/subject/dejjlttx.html