>  기사  >  백엔드 개발  >  PHP 데이터베이스 작업

PHP 데이터베이스 작업

WBOY
WBOY원래의
2016-08-08 09:20:06965검색

PHP는 어떤 데이터베이스를 지원합니까?

PHP는 해당 확장 프로그램을 설치하여 데이터베이스 작업을 구현합니다. 데이터베이스, 현재 주류 데이터베이스에는 MsSQL, MySQL, Sybase, Db2, Oracle, PostgreSQL, Access 등이 포함됩니다. 이러한 데이터베이스 PHP는 이를 지원하기 위해 확장을 설치할 수 있습니다. 일반적으로 LAMP 아키텍처는 Linux, Apache, Mysql, PHP를 나타냅니다. 이므로 MySQL 데이터베이스는 PHP에서 널리 사용됩니다. 이번 장에서는 MySQL의 작동 방식을 간략하게 살펴보겠습니다.

데이터베이스 확장

PHP의 데이터베이스에는 공식 확장을 포함하여 하나 이상의 확장이 있을 수 있습니다. 제3자가 제공한 것. 일반적으로 사용되는 Mysql 확장에는 기본 mysql 라이브러리가 포함되어 있으며 향상된 mysqli 확장을 사용할 수도 있고 연결 및 작업에 PDO를 사용할 수도 있습니다.

다른 확장 프로그램은 기본적으로 유사한 작동 방법을 제공하지만 차이점은 일부 새로운 기능이 있을 수 있고 작동 성능이 다를 수 있다는 것입니다.

데이터베이스 연결을 위한 Mysql 확장 방법:

<span>$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password');</span><p><span>mysqli 확장: </span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$link = mysqli_connect('mysql_host', 'mysql_user', 'mysql_password');</span><p> <span>PDO 확장</span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><p><span>$dsn = 'mysql:dbname=testdb;host=127.0.0.1';</span></p><span></span><p><span>$user = 'dbuser';</span></p><p><span>$password = 'dbpass';</span></p><p><span>$dbh = new PDO($dsn, $user, $password);</span></p><divmicrosoft yahei sans gb neue font-size:14px line-height:21px><p><span>MySQL 데이터베이스에 연결</span></p> <divmicrosoft yahei sans gb neue font-size:14px line-height:21px margin:0px padding:0px word-break:break-all><p></p> <p> <span>PHP에서 데이터베이스를 운영하려면 가장 먼저 해야 할 일은 데이터베이스와 연결을 설정하는 것입니다. 일반적으로 우리는 데이터베이스에 연결하기 위해 mysql_connect 함수를 사용합니다. 이 함수에는 데이터베이스의 주소, 사용자 이름 및 비밀번호를 지정해야 합니다. </span></p> <preubuntu mono line-height:1.6em font-size:13px word-break:break-word><p><span>$host = 'localhost';</span></p><span></span><p><span>$user = 'code1';</span></p><p><span>$link = mysql_connect($host, $user, $pass);</span></p><p><span>$pass = '';</span></p><p><span>PHP가 데이터베이스에 연결하는 방식은 명령줄에서 직접 연결하는 것과 유사합니다. <codeubuntu mono>mysql -hlocalhost -ucode1 -p, 연결이 성공하면 다음을 선택해야 합니다. 동작할 데이터베이스, mysql_select_db 함수를 통해 데이터베이스를 선택한다. </codeubuntu></span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>mysql_select_db('code1');</span><p><span>보통 현재 연결에 사용되는 문자 인코딩을 먼저 설정합니다. 일반적으로 utf8 인코딩을 사용합니다. </span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>mysql_query("set names 'utf8'");</span><p><span>위 단계를 통해 데이터베이스와 연결을 맺고 데이터 작업을 수행할 수 있게 되었습니다. </span></p><p><span>MySQL 쿼리 실행</span></p><divmicrosoft yahei sans gb neue font-size:13px line-height:1.6 margin:0px padding:0px word-break:break-all><divmicrosoft yahei sans gb neue font-size:14px><p><span>다음을 사용하여 데이터베이스 연결이 설정된 후 쿼리할 수 있습니다. mysql_query와 sql 문 형식으로 데이터베이스에 쿼리 명령을 보냅니다. </span></p> <preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$res = mysql_query('select * from user limit 1');</span><p><span>쿼리 클래스 명령문의 경우 리소스 핸들(resource)이 반환되며, 이 리소스를 통해 쿼리 결과 집합의 데이터를 얻을 수 있습니다. </span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><p><span>$row = mysql_fetch_array($res);</span></p><span></span><p><span>var_dump($row);</span></p><p><span>기본적으로 PHP는 가장 가까운 데이터베이스 연결을 사용하여 쿼리를 실행하지만, 연결이 여러 개인 경우 매개변수 명령을 통해 해당 연결에서 쿼리할 수 있습니다. </span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><p><span>$link1 = mysql_connect('127.0.0.1', 'code1', '');</span></p><span></span><p><span>$link2 = mysql_connect('127.0.0.1', 'code1', '', true); //开启一个新的连接</span></p><p><span>$res = mysql_query('select * from user limit 1', $link1); //从第一个连接中查询数据</span></p><divmicrosoft yahei sans gb neue font-size:14px line-height:21px><p><span>MySQL에 새 데이터 삽입 </span></p> <divmicrosoft yahei sans gb neue font-size:14px line-height:21px><p></p> <p><span>사용 방법을 이해한 후 데이터 쿼리를 위한 mysql_query와 마찬가지로 데이터 삽입은 실제로 sql 문을 실행하여 구현됩니다. 예: </span></p> <preubuntu mono line-height:1.6em font-size:13px word-break:break-word><p><span>$sql = "insert into user(name, age, class) values('李四', 18, '高三一班')";</span></p><span></span><p><span>mysql_query($sql); //执行插入语句</span></p><p><span>보통 데이터는 변수나 배열에 저장되므로 sql 문은 먼저 문자열 연결을 통해 얻어야 합니다. </span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><p><span>$name = '李四';</span></p><span></span><p><span>$age = 18;</span></p><p><span>$class = '高三一班';</span></p><p><span>$sql = "insert into user(name, age, class) values('$name', '$age', '$class')";</span></p><p><span>mysql_query($sql); //执行插入语句</span></p><p><span>mysql에서는 insert 문을 실행한 후 자동 증가된 기본 키 ID를 얻을 수 있으며, 이는 PHP의 mysql_insert_id 함수를 통해 얻을 수 있습니다. </span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$uid = mysql_insert_id();</span><p><span>이 ID는 일반적으로 삽입 성공 여부를 확인하는 데 사용되거나 다른 데이터 작업에 연결된 ID로 사용할 수 있습니다. </span></p><p><span>데이터 쿼리 결과 가져오기</span></p><p><divmicrosoft yahei sans gb neue font-size:14px><p><span>이전 장을 통해 PHP가 데이터베이스를 운영하고 MySql 클라이언트 매우 유사합니다. 먼저 연결한 다음 sql 문을 실행하고 원하는 결과 세트를 얻습니다. </span></p> <p><span>PHP有多个函数可以获取数据集中的一行数据,最常用的是mysql_fetch_array,可以通过设定参数来更改行数据的下标,默认的会包含数字索引的下标以及字段名的关联索引下标。</span></p> <preubuntu mono line-height:1.6em font-size:13px word-break:break-word><p><span>$sql = "select * from user limit 1";</span></p><span></span><p><span>$result = mysql_query($sql);</span></p><p><span>$row = mysql_fetch_array($result);</span></p><p><span>可以通过设定参数MYSQL_NUM只获取数字索引数组,等同于mysql_fetch_row函数,如果设定参数为MYSQL_ASSOC则只获取关联索引数组,等同于mysql_fetch_assoc函数。</span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><p><span>$row = mysql_fetch_row($result);</span></p><span></span><p><span>$row = mysql_fetch_array($result, MYSQL_NUM); //这两个方法获取的数据是一样的</span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><p><span>$row = mysql_fetch_assoc($result);</span></p><span></span><p><span>$row = mysql_fetch_array($result, MYSQL_ASSOC);</span></p><p><span>如果要获取数据集中的所有数据,我们通过循环来遍历整个结果集。</span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><p><span>$data = array();</span></p><span></span><p><span>while ($row = mysql_fetch_array($result)) {</span></p><p><span> $data[] = $row;</span></p><p><span>}</span></p></preubuntu></preubuntu></preubuntu></preubuntu></divmicrosoft></p><divmicrosoft yahei sans gb neue font-size:14px line-height:21px><p>查询分页数据</p> <divmicrosoft yahei sans gb neue font-size:14px line-height:21px><p></p> <p>上一节中,我们了解到通过循环可以获取一个查询的所有数据,在实际应用中,我们并不希望一次性获取数据表中的所有数据,那样性能会非常的低,因此会使用翻页功能,每页仅显示10条或者20条数据。</p> <p>通过mysql的limit可以很容易的实现分页,limit m,n表示从m行后取n行数据,在PHP中我们需要构造m与n来实现获取某一页的所有数据。</p> <p>假定当前页为$page,每页显示$n条数据,那么m为当前页前面所有的数据,既$m = ($page-1) * $n,在知道了翻页原理以后,那么我们很容易通过构造SQL语句在PHP中实现数据翻页。</p> <preubuntu mono line-height:1.6em font-size:13px word-break:break-word background:rgb><p><span>$page = 2;</span></p><p><span>$n = 2;</span></p><p><span>$m = ($page - 1) * $n;</span></p><p><span>$sql = "select * from user limit $m, $n";</span></p><p><span>$result = mysql_query($sql);</span></p><p><span>//循环获取当前页的数据</span></p><p><span>while ($row = mysql_fetch_assoc($result)) {</span></p><p><span>$data = array();</span></p><p><span> $data[] = $row;</span></p><p><span>}</span></p><p>在上面的例子中,我们使用了$m与$n变量来表示偏移量与每页数据条数,但我们推荐使用更有意义的变量名来表示,比如$pagesize, $start, $offset等,这样更容易理解,有助于团队协作开发。</p><p></p><pre name="code"><?php //连接数据库 mysql_connect(&#39;127.0.0.1&#39;, &#39;code1&#39;, &#39;&#39;); mysql_select_db(&#39;code1&#39;); mysql_query("set names &#39;utf8&#39;"); //预设翻页参数 $page = 2; $pagesize = 2; //在这里构建分页查询 $count = ($page - 1) * $pagesize; $sql = "select * from user limit $count, $pagesize"; //获取翻页数据 $result = mysql_query($sql); $data = array(); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $data[] = $row; } echo &#39;<pre class="brush:php;toolbar:false">'; print_r($data); echo '';

更新与删除数据

数据的更新与删除相对比较简单,只需要构建好相应的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(); }

关闭MySQL连接

当数据库操作完成以后,可以使用mysql_close关闭数据库连接,默认的,当PHP执行完毕以后,会自动的关闭数据库连接。

mysql_close();

虽然PHP会自动关闭数据库连接,一般情况下已经满足需求,但是在对性能要求比较高的情况下,可以在进行完数据库操作之后尽快关闭数据库连接,以节省资源,提高性能。

在存在多个数据库连接的情况下,可以设定连接资源参数来关闭指定的数据库连接。

$link = mysql_connect($host, $user, $pass); mysql_close($link);



版权声明:本文为博主原创文章,未经博主允许不得转载。

以上就介绍了PHP数据库操作,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

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