>  기사  >  백엔드 개발  >  PHP 데이터베이스 연결 mysql과 mysqli_php 기술 비교 분석

PHP 데이터베이스 연결 mysql과 mysqli_php 기술 비교 분석

WBOY
WBOY원래의
2016-05-16 20:01:131341검색

1. mysql과 mysqli의 개념은 서로 연관되어 있다

1. Mysql과 mysqli는 모두 PHP 함수 세트입니다. mysql 데이터베이스와 거의 관련이 없습니다.

2. php5 버전 이전에는 mysql 데이터베이스를 구동하기 위해 일반적으로 php의 mysql 함수를 사용했습니다. 예를 들어 mysql_query() 함수는 프로세스 지향적입니다. 3. php5 버전 이후에는 mysqli의 함수 기능이 사용되었습니다. 기본적으로는 mysql 시스템 함수의 향상된 버전으로, 더 안정적이고 효율적이며 안전합니다. mysql_query()에 해당하는 것은 객체 지향적이고 객체를 사용하는 것입니다. mysql 데이터베이스를 운영하고 구동합니다

2. mysql과 mysqli의 차이점

1. MySQL은 비영구적 연결 기능입니다. MySQL은 연결될 때마다 연결 프로세스를 엽니다.

2. Mysqli는 영구 연결 기능입니다. mysqli를 여러 번 실행하면 동일한 연결 프로세스가 사용되므로 서버 오버헤드가 줄어듭니다. mysqli는 트랜잭션과 같은 일부 고급 작업을 캡슐화하고 DB 작업 프로세스에서 사용 가능한 많은 방법을 캡슐화합니다.

3. mysql과 mysqli의 사용법

1. mysql(프로세스 모드):

$conn = mysql_connect('localhost', 'user', 'password'); //连接mysql数据库   
 
mysql_select_db('data_base'); //选择数据库  
 
$result = mysql_query('select * from data_base');//第二个可选参数,指定打开的连接   
 
$row = mysql_fetch_row( $result ) ) //只取一行数据   
 
echo $row[0]; //输出第一个字段的值 

PS: Mysqli는 절차적 방식으로 작동합니다. 일부 함수는 mysqli_query(리소스 식별자, SQL 문)와 같은 리소스를 지정해야 하며 리소스 식별자의 매개 변수가 앞에 배치되고 mysql_query(SQL 문, '리소스 식별자) ' )는 선택 사항이며 기본값은 마지막으로 열린 연결 또는 리소스입니다.

2. mysqli(객체 모드):  

<pre name="code" class="php">$conn = new mysqli('localhost', 'user', 'password','data_base');   
//要使用new操作符,最后一个参数是直接指定数据库   
//假如构造时候不指定,那下一句需要$conn -> select_db('data_base')实现   
 
$result = $conn -> query( 'select * from data_base' );   
 
$row = $result -> fetch_row(); //取一行数据   
 
echo row[0]; //输出第一个字段的值 

new mysqli('localhost', usenamer', 'password', 'databasename')을 사용하면 다음 프롬프트와 함께 오류가 보고됩니다.

치명적인 오류: 'mysqli' 클래스를 찾을 수 없습니다...

일반적으로 mysqli 클래스가 기본적으로 활성화되어 있지 않기 때문에 활성화되지 않습니다. win에서는 php.ini를 변경하고 php_mysqli.dll 앞의 ";"을 제거해야 합니다. Linux에서는 mysqli를 컴파일해야 합니다. 그것에.

4. mysql과 mysqli의 예

1.mysql

<span style="font-size:14px;">$con=mysql_connect($dbhostip,$username,$userpassword); 
$db = mysql_select_db($dbdatabasename,$con); 
//执行语句 
$qres=mysql_query("SELECT id,GoodsName FROM user"); 
//提取一条数据 
$row=mysql_fetch_row($result); 
//mysql_fetch_row只能提取出查询结果的第一条记录 
//提取多条记录 
$reslist = array(); 
$i=0; 
while($row = mysql_fetch_row($res)){ 
  $reslist[$i] = $row; 
  $i++; 
 } 
mysql_close($con); 
</span> 

//mysql_fetch_row  提取的结果是没有查询中的字段名了(也就是没有键id,GoodsName,只有值)



//mysql_fetch_assoc 提取的结果有键值


//mysql_fetch_array提取的结果有键值,是前面两种的综合

mysql_connect(), mysql_select_db() 및 기타 함수 앞에 @(오류 제어 연산자)를 사용하여 시스템에서 생성된 오류 메시지를 무시한 다음 die()를 사용하여 오류 메시지를 사용자 정의합니다.
mysql_query() 함수의 반환 값에 대해 실행된 문에 반환 값(예: SELECT, SHOW, DESCRIBE 등)이 있으면 해당 데이터(성공 시) 또는 FALSE(실패 시)가 반환됩니다. 실행된 문에는 반환 값(예: DELETE, DROP, INSERT, UPDATE 등)이 없으며 TRUE(성공 시) 또는 FALSE(실패 시)를 반환합니다.

2.mysqli

$db=new mysqli($dbhostip,$username,$userpassword,$dbdatabasename); 
  
if(mysqli_connect_error()){  
  
  echo 'Could not connect to database.';  
  
  exit; 
  
} 
  
$result=$db->query("SELECT id,GoodsName FROM user"); 
  
$row=$result->fetch_row(); 

5. PHP에서의 mysqli 사용 예

<&#63;php 
  $variable = $_POST['variable']; //Post从表单中提取变量 
  if(!$variable) //如果变量为空,输出错误信息并退出 
  { 
    echo 'You hava not entered search details.Please go back and try again.'; 
    exit; 
  } 
  if(!get_magic_quotes_gpc()) //该函数用于判断get_magic_quotes_gpc是否开启,get_magic_quotes_gpc参数是用于确定是否将从post,get,cookie过来的数据增加转义字符和从数据库出来的数据去掉转义字符 
  { 
    $variable = addlashes($variable);//在特殊文本字符前增加转义字符 
    //stripslashes()用于在去掉转义字符 
  } 
  $localhost = 'hostname';//主机名 
  $user = 'username';//用户名 
  $pwd = 'password';//密码 
  $db = 'databasename';// 
  @$link = new mysqli($localhost,$user,$pwd,$db);//连接数据库 
  if(mysqli_connect_errno())//如果数据库连接失败,输出错误信息并退出 
  { 
    echo 'Error: Coulid not connect to database. Please try again later.'; 
    exit; 
  } 
  $query = "SELECT row from table where some situation";//查询语句 
  $result = $link -> query($query);//查询并返回结果 
  $num_results = $result -> num_rows; //结果行数 
  echo "<p>Number of row found: ". $num_results ."</p>";//输出行数 
   
  for($i = 0;$i < $num_results;$i++)//循环输出每组元素 
  { 
    $row = $result -> fetch_assoc();//提取元素,一次一行,fetch_assoc()提取出的元素,有属性以及值 
    echo stripslashes($row['attributename']);//按属性(键)提取值 
    echo "<br/>"; 
  } 
  $result -> free();//释放内存 
  $link -> close();//断开数据库连接 
&#63;> 

위 내용은 PHP 데이터베이스 연결에 있어서 mysql과 mysqli의 차이점과 사용법에 대한 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다.

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