美文网首页PHP程序员
MySQLi基于面向过程的编程

MySQLi基于面向过程的编程

作者: DragonRat | 来源:发表于2018-05-29 20:08 被阅读15次

    作者:烨竹

    mysqli在windows上,对于PHP 5.3或更新版本,mysqli扩展默认开启,对于PHP 5.0 5.1 5.2,mysqli扩展默认并不会开启,因此php.ini中php_mysqli.dll这个DLL 必须开启。

    其实主要用于mysql转mysqli编程,如下:


    MySQLi基于面向过程的编程和面向对象的编程是相对的,其中使用到的方法都是可以类比的。

    连接数据库

    header("Content-type:text/html;charset=utf-8");
    $link  =  mysqli_connect( 'localhost' ,  'root' ,  '' ,  'test' ) or die ('Connect Error:'.mysqli_connect_error());
    

    设置字符编码

    mysqli_set_charset($link,'UTF8');
    

    插入记录

    $query = "INSERT INTO staff(id,name,job) VALUES('','naruto','保安队长')";
    $res = mysqli_query($link,$query);//插入成功返回真,插入失败返回假
    if($res){
        //插入成功则输出自增主键的id
        echo "AUTO_INCREMENT:".mysqli_insert_id($link);
        echo "<hr/>";
        echo "AFFECTED ROWS:".mysqli_affected_rows($link);
    }else{
        //插入失败则输出错误编号和错误信息
        echo "Error:";
        echo mysqli_errno($link).":".mysqli_error($link);
    }
    

    查询一条记录

    函数名 说明
    mysqli_fetch_assoc($result) 查询到的一条数据以关联数组形式返回
    mysqli_fetch_row($result) 查询到的一条数据以索引数组形式返回
    mysqli_fetch_array($result) 查询到的一条数据以索引数组和关联数组的混合形式返回
    mysqli_fetch_object($result) 查询到的一条数据以对象属性的形式返回
    mysqli_fetch_array($result) 查询到的一条数据以索引数组和关联数组的混合形式返回
    mysqli_fetch_array($result,MYSQLI_BOTH) 查询到的一条数据以索引数组和关联数组的混合形式返回
    mysqli_fetch_array($result,MYSQLI_ASSOC) 查询到的一条数据以关联数组的混合形式返回
    mysqli_fetch_array($result,MYSQLI_ROW) 查询到的一条数据以索引数组的混合形式返回
    $query = "SELECT * FROM staff WHERE id = 2";
    $result = mysqli_query($link, $query);
    $row = mysqli_fetch_assoc($result);
    var_dump($row);    //输出查询结果
    

    查询多条记录

    一次取出全部数据

    函数名 说明
    mysqli_fetch_all($result) 查询到的所有数据以索引数组和关联数组的混合形式返回
    mysqli_fetch_all($result,MYSQLI_BOTH) 查询到的所有数据以索引数组和关联数组的混合形式返回
    mysqli_fetch_all($result,MYSQLI_ASSOC) 查询到的所有数据以关联数组的混合形式返回
    mysqli_fetch_all($result,MYSQLI_ROW) 查询到的所有数据以索引数组的混合形式返回
    $query = "SELECT * FROM staff";
    $result = mysqli_query($link, $query);
    $rows = mysqli_fetch_all($result,MYSQLI_ASSOC);
    echo "共".count($rows)."条记录:";
    var_dump($rows);
    

    每次取出一条数据

    $query = "SELECT * FROM staff";
    $result = mysqli_query($link, $query);
    while($row = mysqli_fetch_assoc($result)){
        $rows[] = $row;
    };
    echo "共".count($rows)."条记录:";
    var_dump($rows);
    

    更新记录

    更新操作和插入操作类似,区别是执行的sql语句不同。

    $query = "UPDATE staff SET name = 'kakax' WHERE id = 3";
    $res = mysqli_query($link,$query);//插入成功返回真,插入失败返回假
    if($res){
        //插入成功则输出自增主键的id
        echo "AUTO_INCREMENT:".mysqli_insert_id($link);
        echo "<hr/>";
        echo "AFFECTED ROWS:".mysqli_affected_rows($link);
    }else{
        //插入失败则输出错误编号和错误信息
        echo "Error:";
        echo mysqli_errno($link).":".mysqli_error($link);
    }
    

    删除记录

    删除操作和插入操作以及更新操作类似,区别是执行的sql语句不通。

    $query = "DELETE FROM staff WHERE id = 13";
    $res = mysqli_query($link,$query);//插入成功返回真,插入失败返回假
    if($res){
        //插入成功则输出自增主键的id
        echo "AUTO_INCREMENT:".mysqli_insert_id($link);
        echo "<hr/>";
        echo "AFFECTED ROWS:".mysqli_affected_rows($link);
    }else{
        //插入失败则输出错误编号和错误信息
        echo "Error:";
        echo mysqli_errno($link).":".mysqli_error($link);
    }
    

    关闭连接

    mysqli_close($link);
    

    如果不适用mysqli_close()语句关闭数据库的连接,则非持久连接会在脚本执行完毕后自动关闭。
    mysqli_close() 不会关闭由 mysqli_pconnect() 建立的持久连接。

    </article>

    下面写的比较好关于mysqli的文章:https://cuiqingcai.com/1534.html
    相关参考:http://www.runoob.com/php/php-ref-mysqli.html
    我的小白项目:https://github.com/keyesone66/shorturl.git

    相关文章

      网友评论

        本文标题:MySQLi基于面向过程的编程

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