PHP+MySQL数据库编程的步骤

  第一步:PHP连接MySQL服务器

  第二步:选择当前要操作的数据库

  第三步:设置请求或返回的数据的字符集

  第四步:执行各种SQL语句。

一.PHP连接MySQL服务器

 PHP连接Mysql的方法有很多(也是php不断更新带来的后果),我就列下以下几种连接方法:


1、使用 mysql ,提示:此种方法官方不建议才,官方提示:will be removed。

$con = mysql_connect("localhost","root",""); 
if (!$con) 
{ 
die('Could not connect: ' . mysql_error()); 
} 
mysql_close($con);

2、使用 mysqli(分过程式与对象式两种)Success... localhost via TCP/IP  :

$link = mysqli_connect('localhost', 'root', '', '007online');

if (!$link) {
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}

echo 'Success... ' . mysqli_get_host_info($link) . "
";

mysqli_close($link);

3、使用PDO 可以用

$db = new PDO('mysql:host=localhost;dbname=007online', 'root', ''); 
try { 
foreach ($db->query('select * from 007_class_news') as $row){ 
print_r($row); 
} 
$db = null; //关闭数据库 
} catch (PDOException $e) { 
echo $e->getMessage(); 
}

4、其他(使用 ADODB 等) ,

详细操作传送门:http://blog.csdn.net/zimin1985/article/details/18732505
require_once 'adodb.inc.php'; 
$conn = &ADONewConnection('mysql'); 
$conn->connect('localhost','root','','007online'); 
$conn->Execute("set names utf8"); 
$res = $conn->Execute("select * from 007_class_news"); 
if (!$res){ 
echo $conn->ErrorMsg(); 
}else{ 
var_dump($res); 
}

二.常用词语(以下用mysqli_xxx)

    

PHP连接MySQL服务器

1.mysqli_connect() 定义和用法:

函数打开一个到 MySQL 服务器的新的连接。


语法

                                                             mysqli_connect(host,username,password,dbname,port,socket);   
                                                
$link = mysqli_connect('localhost', 'root', '', '007online');
 
if (!$link) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}
 
echo 'Success... ' . mysqli_get_host_info($link) . "
";
 
mysqli_close($link);
参数描述
host 可选。规定主机名或 IP 地址。
username 可选。规定 MySQL 用户名。
password 可选。规定 MySQL 密码。
dbname 可选。规定默认使用的数据库。
port 可选。规定尝试连接到 MySQL 服务器的端口号。
socket 可选。规定 socket 或要使用的已命名 pipe。

技术细节

返回值: 返回一个代表到 MySQL 服务器的连接的对象。
PHP 版本: 5+

2exit()

l  描述:输出一个提示信息,并中止脚本继续向下运行。

l  语法:void exit([$msg])

l  参数:$msg是可选项。如果省略,只中止脚本运行。

l  举例:exit(“PHP连接出错了”)

3、 mysqli_connect_errno() 

l  描述:返回上一次MySQL执行失败时的文本错误信息。

l  语法: mysqli_connect_errno()

4、屏蔽系统错误@

       描述:@可以屏蔽各种函数调用错误,或包含文件错误,但是不能用在函数定义或类定义之前。

        例子:@mysqli_connect() 

选择MySQL数据库

1.mysqli_select_db() 函数用于更改连接的默认数据库。

    

$conn=null;
    function query($sql){
        //empty 判断一个变量的值是否为空 
        global $conn;
        $conn=mysqli_connect('localhost','root','');//连接数据库服务器
        mysqli_select_db($conn,'testcharset');//选中要操作的数据库
        //mysqli_query($conn,'set names utf8');//设定编码格式
        $result=mysqli_query($conn,$sql);//执行一个sql语句
        return $result;    
    }

   语法:mysqli_select_db(connection,dbname);  

参数描述
connection 必需。规定要使用的 MySQL 连接。
dbname 必需,规定要使用的默认数据库。
返回值: 如果成功则返回 TRUE,如果失败则返回 FALSE。
PHP 版本: 5+

设置MySQL返回的数据字符集

1.mysqli_query($conn,$sql);//执行一个SQL语句

  

 描述:发送一条 MySQL 查询。

    语法:resource

mysqli_query( string $query [, resource $link = NULL ] )

l  参数:

  $query:指要发送的SQL语句。

  增加记录:$query = “INSERT INTO news(title,content) VALUES(‘标题’ , ‘内容’)”

   删除记录:$query = “DELETE FROM news WHERE id=10”

  修改记录:$query = “UPDATE news SET title = ‘新标题’ , content = ‘新内容’ WHERE id=80”

  查询记录:$query = “SELECT * FROM news WHERE id<100”

  $link:可选项。指上一次打开的活动连接。

l  返回值

  如果执行SELECT、SHOW、DESCRIBE命令,成功时返回结果集,失败时返回FALSE。

  结果集也是一个资源标识符,是到MySQL数据的一个引用地址。

  如果执行其它的SQL语句,执行成功返回TRUE,执行失败返回FALSE。

l  举例:

  $result = mysqli_query(“SELECT * FROM news WHERE id<100”)

  $result = mysqil_query(“DELETE FROM news WHERE id=100”)

从结果集中取出一行数据

1mysqli_fetch_row()

  描述:从结果集中取得一行作为枚举数组。

  语法:array mysql_fetch_row ( resource $result )

  参数:$result是结果集变量。

  返回值:返回一个枚举数组,也就是从0开始的正整数下标。这里的下标,是与表的字段下标是对应。

  举例:$arr = mysqli_fetch_row($result)

 输出类似:

Array
(
[0] => Adams
[1] => John
[2] => London
)

2mysqli_fetch_array()

   描述:从结果集中取出一行,作为混合数组返回。

  语法:array mysqli_fetch_array ( resource $result [, int $ result_type ] )

  参数:

  $result:是指结果集变量。

  $result_type:是指返回的数组的类型。取值:MYSQL_BOTH、MYSQL_ASSOC、MYSQL_NUM

  MYSQL_BOTH:默认的。也就是两种下标都存在。

  MYSQL_ASSOC:只有字符下标的数组。相当于mysql_fetch_assoc()的功能。

  MYSQL_NUM:只有整数下标的数组。相当于mysql_fetch_row()的功能。

  以上三个参数是常量,系统常量必须全大写。

  返回值:返回一个数组,至于是什么数组,取决于第二个参数。

  举例:

  $arr = mysql_fetch_array($result)  //混合数组

  $arr = mysql_fetch_array($result , MYSQL_ASSOC )  //关联数组

  $arr = mysql_fetch_array($result , MYSQL_NUM)   //枚举数组

输出类似:

Array
(
[0] => Adams
[LastName] => Adams
[1] => John
[FirstName] => John
[2] => London
[City] => London
) 
<?php 
// 假定数据库用户名:root,密码:123456,数据库:RUNOOB 
$con=mysqli_connect("localhost","root","123456","RUNOOB"); 
if (mysqli_connect_errno($con)) 
{ 
    echo "连接 MySQL 失败: " . mysqli_connect_error(); 
} 
 
$sql="SELECT name,url FROM websites ORDER BY alexa";
$result=mysqli_query($con,$sql);
 
// 数字数组
$row=mysqli_fetch_array($result,MYSQLI_NUM);
printf ("%s : %s",$row[0],$row[1]);
 
// 关联数组
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);
printf ("%s : %s",$row["name"],$row["url"]);
 
// 释放结果集
mysqli_free_result($result);
 
mysqli_close($con);
?>

3mysqli_fetch_assoc()

  描述:从结果集中取一行,以关联数组返回。

  语法:array mysqli_fetch_assoc(resource $result)

  举例:$arr = mysqli_fetch_assoc($result)

  输出类似:

  

Array
(
[LastName] => Adams
[FirstName] => John
[City] => London
) 

 增删查改的例子:

<?php

 //连接查询

$conn=null;
    function query($sql){
        //empty 判断一个变量的值是否为空 
        global $conn;
        $conn=mysqli_connect('localhost','root','');//连接数据库服务器
        mysqli_select_db($conn,'007online');//选中要操作的数据库
        mysqli_query($conn,'set names utf8');//设置指定编码格式
        $result=mysqli_query($conn,$sql);//执行一个SQL语句
        return $result;    
    }
    
    /*
    *执行SQL查询数据
    *@param[参数] $sql  执行查询的SQL语句
    *@param[参数] $isnum 是否返回数字键的数组  如果为true返回数字键数组//否则返回false
    *@return[返回] array 查询的结果数组 如果返回false查询失败
    */
    function select($sql,$isnum=false){
        $result=query($sql);
        if($result){
            $resultArray=array();
            if($isnum){
                while($arr=mysqli_fetch_row($result)){ //mysqli_fetch_row 的意思是:从结果集中取出一行数据
                    array_push($resultArray,$arr);
                }
            }else{
                while($arr=mysqli_fetch_assoc($result)){
                    array_push($resultArray,$arr);
                }
            }
            return $resultArray;            
        }else{
            return false;
        }
    }
    
    //验证
    // $arr=select('select * from 007_class_news');
    // print_r($arr);
// -----------------------------------------------------------------------------------------------------------------------------------------------

 

// //连接插入

$conn=null;
    function query($sql){
        //empty 判断一个变量的值是否为空 
        global $conn;
        $conn=mysqli_connect('localhost','root','');//连接数据库服务器
        mysqli_select_db($conn,'testcharset');//选中要操作的数据库
        mysqli_query($conn,'set names utf8');
        $result=mysqli_query($conn,$sql);
        return $result;    
    }
    
    /*
    *执行SQL插入数据
    *@param[参数] $sql  执行插入的SQL语句
    *@param[参数] return boolean||int  如果执行失败 返回false,如果插入成功 返回插入的ID
    */
    function insert($sql){
        global $conn;//声明为全局
        $result=query($sql);
        if($result){
            return mysqli_insert_id($conn); //如果插入成功,返回ID
        }
        else{
            return false;
        }
    }
    // $sql='insert into admin (`id`,`username`,`password`,`gender`,`age`) values ("","xkc","xkc",1,15)';
    //验证
    //一定要注意MySQL的单引号和双引号的区别,牢记,妹的坑了我一天时间不出结果……
    $sql='INSERT INTO news(`title`, `author`, `source`, `hits`, `is_ppt`, `content`, `addate`) VALUES ("啦啦","unusual米","乱编等等七塘",3000,0,"content",300)';

    $arr=insert($sql); //这里实际上是我在写的insert函数返回的一个判断,(如果执行成功则返回插入成功行的ID ,否则返回false)
    print_r($arr);

// -----------------------------------------------------------------------------------------------------------------------------------------------------

 

// //连接删除

 

    $conn=null;
    function query($sql){
        //empty 判断一个变量的值是否为空 
        global $conn;
        $conn=mysqli_connect('localhost','root','');//连接数据库服务器
        mysqli_select_db($conn,'testcharset');//选中要操作的数据库
        //mysqli_query($conn,'set names utf8');
        $result=mysqli_query($conn,$sql);
        return $result;    
    }
    
//     /*
//     *执行SQL删除数据
//     *@param[参数] $sql  执行删除的SQL语句
//     *@param[参数] return boolean||int  如果执行失败 返回false,如果删除成功 返回删除了几条数据(即受影响的行数)
//     */
    function del($sql){
        global $conn;//声明为全局
        $result=query($sql);
        if($result){
            return mysqli_affected_rows($conn); //如果执行成功,返回改变了多少行(返回受影响的行数)
        }
        else{
            return false;
        }
    }
    
    $sql='delete from news where id=2';
    $arr=del($sql);//del返回受影响的行数
    print_r($arr);

 

// // ------------------------------------------------------------------------------------------------------------------------------------------

 

// 连接更改

 

$conn=null;
    function query($sql){
        //empty 判断一个变量的值是否为空 
        global $conn;
        $conn=mysqli_connect('localhost','root','');//连接数据库服务器
        mysqli_select_db($conn,'testcharset');//选中要操作的数据库
        //mysqli_query($conn,'set names utf8');
        $result=mysqli_query($conn,$sql);//
        return $result;    
    }
    
    /*
    *执行SQL修改数据
    *@param[参数] $sql  执行修改的SQL语句
    *@param[参数] return boolean||int  如果执行失败 返回false,如果修改成功 返回修改了几条数据(即受影响的行数)
    */
    function update($sql){
        global $conn;//声明为全局
        $result=query($sql);
        if($result){
            return mysqli_affected_rows($conn); //如果执行成功,返回受影响的行数
        }
        else{
            return false;
        }
    }
    
    $sql='update news set hits ="2333" where id<=5';
    $arr=update($sql);//del返回受影响的行数
    print_r($arr);
 ?>

PHP函数补充

1include语法结构

l  描述:包含并运行指定文件。

l  语法:include $filename  或者  include($filename)

l  举例:include “include/conn.php”

2require语法结构

l  描述:包含并运行指定文件。

l  语法:require $filename  或者  require($filename)

l  举例:require “include/conn.php”

注意:include和require都是包含并运行文件,但是,是有区别的。

      如果包含的文件不存在,include将报一个警告错误,脚本继续向下运行。

      而require将报致命错误,脚本将立即终止执行。

3header()

l  描述:发送一个自定义的http报文,换句话说:PHP返回的数据的格式或字符集。

l  语法:void header ( string $string)

l  举例:

u  header(“content-type:text/html;charset=utf-8”)  //设置PHP返回数据的字符集

u  header(“location:http:www.sina.com.cn”);      //网页跳转

u  JS中的跳转:location.href = “http://www.sina.com.cn”

u  HTML跳转:<meta http-equiv = “refresh” content = “2;url = http://www.sina.com.cn”>

URL统一资源定位器。

http://www.sina.com.cn/index.php?username=yao&userpwd=123456#top

?之前是文件名称。?之后为查询字符串。

查询字符串:?username=yao&userpwd=123456   //location.search

查询字符串之后,就是锚点名称。如:#top

urlencode()

描述:编码 URL 字符串

语法:string urlencode ( string $str )

说明:返回字符串,此字符串中除了 -_.之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。

举例:urlencode(“第32期”)  =  %E7%AC%AC32%E6%9C%9F

urldecode()

描述:解码已编码的 URL 字符串

语法:string urldecode ( string $str )

原文地址:https://www.cnblogs.com/mrszhou/p/7275121.html