1. PHP 데이터베이스 연결 및 기본 동작
MySQL은 '클라이언트/서버' 아키텍처를 사용합니다. PHP로 설치된 MySQL 확장 기능을 사용하는 것과 클라이언트 소프트웨어 영역을 직접 사용하여 MySQL 데이터베이스 서버에 액세스하는 것도 동일한 원리입니다. SQL 명령을 MySQL 관리 시스템에 보낸 다음 결과를 사용자에게 반환해야 합니다.
PHP에서 SQL은 두 가지 범주로 나뉩니다(SQL 문 분류 참조). 하나는 선택/설명 테이블 이름과 같은 결과 집합을 반환하는 DQL 문입니다. 실행 후 PHP는 결과 집합을 처리해야 합니다. 그 외는 DML, DDL 등과 같은 결과가 없지만 DML 문의 성공적인 실행은 데이터 테이블의 레코드에 영향을 미칩니다.
<?php<br />//连接数据库,常用参数是主机名、用户名和密码<br />$link = mysql_connect('localhost','root','123456');<br />//判断是否连接成功<br />if(!$link)<br />{<br />die('连接失败'.mysql.error()); //连接成功返回资源标识符,失败返回false,mysql_error显示错误信息<br />}<br /><br />//选择数据库,mysql_error()只在调试中使用,再部署项目时就不要了,不然会泄露数据库信息<br />mysql_select_db('test') or die('选择数据库失败'.mysql_error());<br /><br />//mysql_query()可以设置字符集和执行SQL语句<br />mysql_query('set names utf-8');<br />$sql = 'insert into test(id,name) values("1","dwqs")';<br />$result = mysql_query($sql); //执行sql返回结果集<br /><br />//处理结果集,insert属于DML,会对表的记录有影响<br />if($result && mysql_affected_rows() > 0)<br>{<br>//mysql_insert_id()返回最后一条新纪录的auto_increment值<br>echo '插入数据成功'.mysql_insert_id().'<br/>';<br>}<br>else<br>{<br>echo '插入数据失败,错误号:'.mysql_errno().'错误信息:'.mysql_error().'<br/>';<br>}<br><br>//关闭连接<br>mysql_close($link);<br>?>
2. PHP 처리 선택 쿼리 결과 세트
PHP에서 select 문을 실행하면 각 필드를 처리하는 데 사용할 수 있는 결과 집합이 반환됩니다.
$result = mysql_query('select * from test');<br>//获取记录行的个数<br>$rows = mysql_num_rows($result);<br>//获取字段个数,即数据列<br>$cols = mysql_num_fields($result);
결과 세트의 데이터에 액세스해야 하는 경우 다음 네 가지 기능 중 하나를 사용할 수 있습니다(모두 결과 세트 리소스 식별자를 매개변수로 사용하고 자동으로 다음 레코드를 반환하며 끝에 false를 반환). 테이블)
1.mysql_fetch_row(): 결과 레코드를 반환하고 이를 일반 인덱스 데이터로 저장하는 함수입니다
2. mysql_fetch_assoc(): 결과 세트에서 행을 가져와서 관련 데이터로 저장합니다
3. mysql_fetch_array(): 결과 집합에서 연관 배열, 숫자 배열 또는 둘 다로 행을 가져옵니다. MYSQL_ASSOC(연관 배열 형식), MYSQL_NUM(인덱스 배열 형식) 및 MYSQL_BOTH를 두 번째 매개 변수로 사용하여 반환된 데이터 형식을 지정할 수 있습니다.
4. mysql_fetch_object(): 결과 세트에서 행을 객체로 가져오고, 각 필드는 객체 모드에서 액세스됩니다.
권장 사항: 특별한 요구 사항 없이 mysql_fetch_array()를 사용하지 마세요. mysql_fetch_row() 또는 mysql_fetch_assoc()을 사용하면 동일한 기능을 높은 효율성으로 얻을 수 있습니다.
결과 세트와 관련하여 일반적으로 사용되는 세 가지 기능도 있습니다
5. mysql_data_seek(int $num): 내부 결과의 포인터를 이동합니다. $num은 설정하려는 새 결과 세트 포인터의 행 수입니다.
6. mysql_fetch_lengths(resource <font face="NSimsun">$result</font>
): 결과 세트의 각 출력 길이를 가져옵니다
7. mysql_result(resource <font face="NSimsun">$result</font>
, int <font face="NSimsun">$row[,mixed $field]</font>
): MySQL 결과 집합의 단위 내용을 반환합니다. 필드 매개변수는 필드의 오프셋 또는 필드 이름이거나 필드 테이블 포인트 필드 이름(tablename.fieldname)일 수 있습니다. 열에 별칭이 지정되면('select foo as bar from...') 열 이름 대신 별칭이 사용됩니다. mysql_result() 호출은 결과 세트를 처리하는 다른 함수와 혼합될 수 없습니다.