>  기사  >  백엔드 개발  >  PHP 작업 MySQL

PHP 작업 MySQL

不言
不言원래의
2018-04-26 15:43:2919339검색

이 글은 MySQL을 운영하기 위한 PHP를 주로 소개하는데, 이는 특정 참조 가치가 있습니다. 이제는 모든 사람과 공유합니다. 도움이 필요한 친구들이 참고할 수 있습니다.

PHP 작업 MySQL

관련 mysql 튜토리얼: "mysql tutorial"

一, PHP를 사용하여 MySQL 데이터베이스에 연결

PHP 함수 mysqli_connect를 사용하여 mysql 데이터베이스에 연결
구문: $conn = mysqli_connect('hostname','username','password','database name' ,port); 연결이 성공하면 리소스 개체가 반환되고, 연결이 실패하면 false가 반환됩니다. <code>$conn = mysqli_connect('主机名','用户名','密码','数据库名',端口); 连接成功返回资源对象,失败返回false
$conn 称为【数据库连接标识】

header("Content-type:text/html;charset=utf-8");
$conn = @mysqli_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;root&#39;,&#39;student&#39;) or die("数据库连接错误!");
echo "<pre class="brush:php;toolbar:false">";
var_dump($conn);echo "
";

二、使用PHP访问MySQL数据库

使用PHP函数 mysqli_query 向MySQL数据库发送SQL指令去查询,将MySQL数据库返回的结果封装成对象作为函数的返回值。
语法:$result = mysqli_query(数据库连接标识,SQL指令);  
$result 称为【结果集】

三、结果集的处理

有两种结果集,主要区别于当前所执行的SQL指令,是否存在数据返回。

  1. 有返回数据:select、show、desc
    mysqli_query 会返回一个资源类型。执行成功返回结果集,失败返回 false
    注意:由于资源类型永远为真,不能用于判断是否有数据,只能判断命令是否执行成功

  2. 无返回数据:insert、delete、update、set、DDL(数据定义语言,如create、alter、drop)
    mysqli_query 会返回一个布尔值。执行成功返回true,失败返回 false

使用 mysqli_fetch_assoc 从结果集中读取数据,将读取到的数据以关联数组的形式返回,关联数组的键名就是 字段名 ,同时结果集的指针向下移动一行。
语法:$row = mysqli_fetch_assoc(结果集);

header("Content-type:text/html;charset=utf-8");
$conn = @mysqli_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;root&#39;,&#39;student&#39;) or die("数据库连接错误!");
$rs = mysqli_query($conn, &#39;set names utf8&#39;);//设置PHP与MySQL交互默认字符集var_dump($rs);
$rs = mysqli_query($conn, &#39;select * from student&#39;);
while ($row = mysqli_fetch_assoc($rs)) {    
echo "<pre class="brush:php;toolbar:false">";
    var_dump($row);    
    echo "
"; }

从结果集中得到数据的三个函数:

  1. mysqli_fetch_assoc()  获取一行数据作为【关联】数组返回

  2. mysqli_fetch_row() 获取一行数据作为【索引】数组返回

  3. mysqli_fetch_array() 获取一行数据作为【关联】数组和【索引】数组返回

统计结果集中数据的行数
语法:mysqli_num_rows(结果集);  
通常用于判断结果集中是否有数据,如果大于0就证明有数据,等于0就是没数据。

echo mysqli_num_rows($conn);

释放结果集,释放结果集所占的内存空间
语法:mysqli_free_result(结果集);

mysqli_free_result($rs);

四、关闭数据库连接

语法:mysqli_close(数据库连接标识);  
如不使用 mysqli_close 关闭数据库连接,PHP默认在代码执行结束后自动关闭。

mysqli_close($conn);

五、其他用法

错误信息
语法:mysqli_error(数据库连接标识);  
通常用于对错误进行调试和查看

echo mysqli_error($conn);

获取刚插入数据的ID
语法:mysqli_insert_id(数据库连接标识);

六、项目的字符编码

MySQL的字符集
MySQL数据最终是保存在数据库,表,记录上的。
数据在真实保存时,受到几个地方的影响:

  • 字段的编码

  • 表的编码

  • 库的编码

  • MySQL服务器的内置编码

如果字段上设置了编码,保存数据以字段编码为准。
如果字段没有设置编码,以表的编码为准。
如果表没有设置编码,则以库上设置的编码为准。
如果库没有设置编码,则以MySQL服务器的内置编码为准。

以上编码都是服务器确定的,只需对数据库、表、字段的编码进行设置即可。

数据在客户端展示的编码
四个地方影响客户端的展示

  1. 数据在服务器端存储的编码

下面三个与客户端相关

  1. 客户端向服务器端发送的数据编码
    服务器变量(配置项):character_set_client

  2. 客户端与服务器端之间的连接层使用的编码
    服务器变量(配置项):character_set_connection

  3. 服务器端向客户端发送的处理结果的数据编码
    服务器变量(配置项):character_set_results$conn은 [데이터베이스 연결 식별자]라고 합니다.

    set character_set_client=utf8;
    set character_set_connection=utf8;
    set character_set_results=utf8;
    🎜 2. PHP를 사용하여 다음을 수행합니다. MySQL 데이터베이스에 액세스 🎜🎜PHP 함수 mysqli_query를 사용하여 SQL을 MySQL 데이터베이스로 보내기 지침은 MySQL 데이터베이스에서 반환된 결과를 함수의 반환 값으로 개체에 쿼리하고 캡슐화하는 데 사용됩니다. 🎜구문: $result = mysqli_query(데이터베이스 연결 식별자, SQL 명령); 🎜$result는 [결과 집합]🎜🎜3이라고 합니다. 3. 결과 집합 처리🎜🎜예 두 가지 결과 세트는 주로 현재 실행된 SQL 명령과 반환된 데이터가 있는지 여부와 다릅니다. 🎜
    1. 🎜반환 데이터가 있습니다: select, show, desc 🎜mysqli_query는 리소스 유형을 반환합니다. 성공적으로 실행하면 결과 세트가 반환되고, 실패하면 false가 반환됩니다. 🎜참고: 리소스 유형은 항상 true이므로 데이터가 있는지 확인하는 데 사용할 수 없습니다. 명령이 성공적으로 실행되었는지 확인하는 데만 사용할 수 있습니다. Strong>🎜
    2. 🎜 반환된 데이터 없음: 삽입, 삭제, 업데이트, 설정, DDL(생성, 변경, 삭제와 같은 데이터 정의 언어) 🎜mysqli_query는 부울 값을 반환합니다. 성공하면 true, 실패하면 false를 반환합니다.🎜
    🎜mysqli_fetch_assoc을 사용하여 결과 집합에서 데이터를 읽고, 읽은 데이터를 연관 배열 형식으로 반환합니다. 연관 배열의 키 이름은 다음과 같습니다. 필드 이름과 동시에 결과 집합 포인터가 한 행 아래로 이동합니다. 🎜구문: $row = mysqli_fetch_assoc(result set);🎜rrreee🎜결과 세트에서 데이터를 가져오는 세 가지 함수: 🎜
    1. 🎜mysqli_fetch_assoc () 데이터 행을 가져와서 [연관] 배열로 반환🎜
    2. 🎜mysqli_fetch_row() 데이터 행을 가져와 [인덱스] 배열로 반환🎜
    3. 🎜mysqli_fetch_array() 데이터 행을 [연관]]배열 및 [인덱스] 배열 반환으로 가져옵니다🎜
    🎜결과 집합의 데이터 행 수 계산 🎜구문: mysqli_num_rows(result set); 🎜일반적으로 결과 집합에 데이터가 있는지 확인하는 데 사용됩니다. 0보다 크면 데이터가 있음을 의미합니다. 데이터가 없다는 뜻이에요. 🎜rrreee🎜결과 세트 해제, 결과 세트가 차지하는 메모리 공간 해제🎜구문: mysqli_free_result(result set);🎜rrreee🎜4 데이터베이스 연결을 닫습니다. 🎜구문: mysqli_close(데이터베이스 연결 식별자); 🎜mysqli_close를 사용하여 데이터베이스 연결을 닫지 않으면 PHP는 코드 실행이 완료된 후 기본적으로 자동으로 닫습니다. 🎜rrreee🎜5. 기타 사용법🎜🎜오류 메시지 🎜구문: mysqli_error(데이터베이스 연결 식별자); 🎜보통 오류를 디버그하고 보는 데 사용됩니다🎜rrreee🎜Get 방금 삽입한 데이터의 ID 🎜구문: mysqli_insert_id(데이터베이스 연결 ID);🎜🎜6. 프로젝트의 문자 인코딩🎜🎜MySQL 문자 집합 🎜 MySQL 데이터는 궁극적으로 데이터베이스, 테이블 및 레코드에 저장됩니다. 🎜데이터가 실제로 저장될 때 여러 위치의 영향을 받습니다: 🎜
    • 🎜필드 인코딩🎜
    • 🎜데이터 인코딩 table🎜
    • 🎜라이브러리 인코딩🎜
    • 🎜MySQL 서버 내장 인코딩🎜
    🎜필드에 인코딩을 설정하면 저장된 데이터가 필드 인코딩이 적용됩니다. 🎜필드에 인코딩 세트가 없으면 테이블의 인코딩이 우선 적용됩니다. 🎜테이블에 인코딩 세트가 없으면 라이브러리에 설정된 인코딩이 우선 적용됩니다. 🎜라이브러리가 인코딩을 설정하지 않은 경우 MySQL 서버에 내장된 인코딩이 우선 적용됩니다. 🎜🎜위 인코딩은 서버에 의해 결정됩니다. 데이터베이스, 테이블 및 필드의 인코딩만 설정하면 됩니다. 🎜🎜클라이언트 측에 표시되는 데이터 인코딩 🎜네 가지 위치가 클라이언트 표시에 영향을 미칩니다.🎜
    1. 🎜클라이언트 측에 저장된 데이터 인코딩 서버 측🎜
    🎜다음 세 가지는 클라이언트와 관련이 있습니다🎜
    1. 🎜클라이언트가 서버로 보내는 데이터 인코딩🎜서버 변수 (구성 항목):character_set_client🎜
    2. 🎜클라이언트와 서버 사이의 연결 계층에서 사용되는 인코딩🎜Server 변수(구성 항목): character_set_connection🎜
    3. 🎜서버에서 클라이언트로 전송되는 처리 결과의 데이터 인코딩🎜서버 변수(설정 항목): character_set_results🎜

    可以使用 show variables like 'char%'; 在MySQL命令行模式下查看相关变量。
    可使用 set指令单独设置,如:set character_set_results=utf8;

    set names 是一个快捷操作,同时设置了以上三个服务器变量(配置项),当使用set names utf8;时,相当于

    set character_set_client=utf8;
    set character_set_connection=utf8;
    set character_set_results=utf8;

    项目中确保字符编码五个地方统一

    1. MySQL数据库服务器保存数据的编码

    2. 设置php与MySQL交互层编码 mysqli_query($conn, 'set names utf8');

    3. PHP与浏览器之间交互的编码 header("Content-type:text/html;charset=utf-8");

    4. HTML meta 标签声明使用编码 0d94b2dad07259293dd606022eaa23d8

    5. PHP文件保存的编码(在编辑器中设置)

    更多mysql相关知识请关注php中文网mysql视频教程频道

    相关推荐:

    PHP操作JSON方法大全

    PHP操作MongoDB实现增删改查功能

    【mysql视频教程】2019年最火的5个mysql视频教程推荐

위 내용은 PHP 작업 MySQL의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP용 Xdebug 디버깅다음 기사:PHP용 Xdebug 디버깅