Mysqli와 PDO를 통해 mysql 데이터를 연결하는 PHP에 대한 자세한 설명

黄舟
풀어 주다: 2017-03-01 13:46:49
원래의
1402명이 탐색했습니다.

머리말

실제 개발에서는 데이터베이스 작업 클래스를 직접 작성하는 경우가 거의 없으며 대부분 일부 프레임워크를 통해 구현됩니다. 매뉴얼을 빌려서 직접 작성하기 때문에 php를 mysql에 연결하는 방법을 정리할 필요가 있을 것 같습니다. php는 mysql 확장, mysqli 확장, pdo 확장을 통해 mysql에 연결할 수 있는데, php의 상위 버전에서는 mysql_이 제거되기 때문입니다. 일련의 방법이 있으므로 여기에는 나머지 두 가지 연결 방법만 요약되어 있습니다. 먼저 다음과 같이 php.ini 구성 파일을 확인해야 합니다.


팁, 확장 라이브러리를 열었다고(즉, 앞의 ';' 제거) 누가 말했지만 여전히 mysqli_ 또는 pdo 시리즈 메소드를 찾을 수 없다는 메시지가 계속 표시된다면 이는 아마도 확장 라이브러리가 있는 디렉터리가 지정되지 않았기 때문입니다. extension_dir 매개변수를 찾아 확장 프로그램이 있는 디렉터리를 지정하세요.

extension_dir = "D:/wamp/bin/php/php5.5.12/ext/"
로그인 후 복사

구성 파일

먼저 데이터베이스에 연결하는 데 필요한 구성 파일을 분리하여 매번 작성할 필요 없이 필요할 때 직접 포함하거나 요구하면 됩니다. 포함 및 요구 사항이 확실하지 않은 경우 http://www.php.cn/

파일 이름 conf.php

<🎜를 확인하세요. >

return array(
		&#39;host&#39;=>&#39;127.0.0.1&#39;,
		&#39;user&#39;=>&#39;root&#39;,
		&#39;password&#39;=>&#39;&#39;,//因为测试,我就不设置密码,实际开发中,必须建立新的用户并设置密码
		&#39;dbName&#39;=>&#39;xxpt&#39;,
		&#39;charSet&#39;=>&#39;utf8&#39;,
        	&#39;port&#39;=>&#39;3306&#39;
        	);
로그인 후 복사

mysqli 확장 프로그램을 통해 연결

mysqli는 mysql에 연결하는 방법이 두 가지이며 전처리를 지원합니다. 객체 지향이고 다른 하나는 프로세스 지향입니다.

1. 프로세스 중심 연결 mysql


$dbConf=include &#39;conf.php&#39;;
function openDb($dbConf){
	$conn=mysqli_connect($dbConf[&#39;host&#39;],$dbConf[&#39;user&#39;],$dbConf[&#39;password&#39;],$dbConf[&#39;dbName&#39;],$dbConf[&#39;port&#39;]) or die(&#39;打开失败&#39;);
	//当然如上面不填写数据库也可通过mysqli_select($conn,$dbConf[&#39;dbName&#39;])来选择数据库
	mysqli_set_charset($conn,$dbConf[&#39;charSet&#39;]);//设置编码
	return $conn;
}
function closeDb($conn){
	mysqli_close($conn);
}

//1.打开连接
$conn=openDb($dbConf);
//2query方法执行增、查、删、改
$sql=&#39;SELECT t.`id1` from `t1` as t&#39;;
/*************数据查询***************************/
$rs=$conn->query($sql);
//从结果集中读取数据
//fetch_assoc:返回键值对形式,键位字段名、fetch_row:返回键值对形式,键值为数值、fetch_array:返回1和2两种形式的组合
$data=array();//保存数据
while($tmp=mysqli_fetch_assoc($rs)){//每次从结果集中取出一行数据
	$data[]=$tmp;
}
//对数据进行相应的操作
print_r($data);//输出数据

/*************数据插入***************************/
$sql=&#39;INSERT INTO `t1`(`id1`,`id2`) VALUES(3,4);&#39;;
$rs=$conn->query($sql);
//3.关闭连接
closeDb($conn);
로그인 후 복사


2. mysql에 대한 객체지향 연결

$dbConf=include &#39;conf.php&#39;;
//打开
$conn=new mysqli($dbConf[&#39;host&#39;],$dbConf[&#39;user&#39;],$dbConf[&#39;password&#39;],$dbConf[&#39;dbName&#39;],$dbConf[&#39;port&#39;]);
if(!$conn){
	die(&#39;数据库打开失败&#39;);
}
//执行增删改查
/*************数据查询***************************/
$sql=&#39;SELECT t.`id1` from `t1` as t&#39;;
$rs=$conn->query($sql);//获取结果集
//通过fetch_assoc、fetch_array、fetch_row从结果集中获取数据
while ($tmp=$rs->fetch_assoc()) {
	print_r($tmp);
}
/*************数据删除***************************/
$sql=&#39;DELETE FROM `t1` WHERE `id1`=3&#39;;
$rs=$conn->query($sql);//获取结果集
print_r($rs);$conn->close();
로그인 후 복사


3.

mysqli전처리

메인 설명 Mysli 객체 프로그래밍 전처리, mysqli_prepare를 이용한 프로세스 중심 전처리는 소개하지 않겠습니다

$dbConf=include &#39;conf.php&#39;;
//打开
$conn=new mysqli($dbConf[&#39;host&#39;],$dbConf[&#39;user&#39;],$dbConf[&#39;password&#39;],$dbConf[&#39;dbName&#39;],$dbConf[&#39;port&#39;]);
if(!$conn){
	die(&#39;数据库打开失败&#39;);
}
//执行增删改查
/*************数据查询***************************/
$sql=&#39;SELECT * from `t1` as t WHERE id2>?&#39;;
$stmt=$conn->prepare($sql);
if(!$stmt){
	die(&#39;sql语句有问题&#39;);
}
//绑定参数
$id2=2;
$stmt->bind_param(&#39;i&#39;,$id2);//不能写成bind_param(&#39;i&#39;,2)
//执行
$stmt->execute();
//将结果绑定发到指定的参数上
$stmt->bind_result($id1, $id2);
//获取结果
while ($tmp=$stmt->fetch()) {
	print_r(&#39;id1=&#39;.$id1.&#39;,id2=&#39;.$id2);
	echo &#39;</br>&#39;;
}
//关闭
$stmt->free_result();//释放结果  
$stmt->close();//关闭预编译的指令.  
$conn->close();//关闭连接
로그인 후 복사

전처리 바인딩 매개변수의 매개변수 유형은 다음과 같습니다. 팔로우


php는 PDO를 사용하여 다음을 수행합니다. mysql에 연결
$dbConf=include &#39;conf.php&#39;;
//打开
$pdo=myPDO::getInstance($dbConf);
/*************数据查询***************************/
$sql=&#39;SELECT t.`id1` from `t1` as t&#39;;
$rs=$pdo->query($sql);
$data=$rs->fetchAll();//取出所有结果
print_r($data);
/*************数据更新***************************/
$sql=&#39;UPDATE t1 SET t1.`id1`=11 WHERE t1.`id1`=1&#39;;
$rs=$pdo->query($sql);

/**
 * 数据库pdo连接
 */
class myPDO{	
	private static $pdo;
	
	private function __construct(){
		//code
	}
	private function __clone(){
		//code
	}
	/**
	 * 获取实例化的PDO,单例模式
	 * @return PDO
	 */
	public static function getInstance($dbConf){
		if(!(self::$pdo instanceof PDO)){
			$dsn ="mysql:host=".$dbConf[&#39;host&#39;].";port=".$dbConf[&#39;port&#39;].";dbname=".$dbConf[&#39;dbName&#39;].";
			charset=".$dbConf[&#39;charSet&#39;];
			try {
				self::$pdo = new PDO($dsn,$dbConf[&#39;user&#39;], $dbConf[&#39;password&#39;], 
				array(PDO::ATTR_PERSISTENT => true,PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); //保持长连接
				self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
			} catch (PDOException $e) {
				print "Error:".$e->getMessage()."<br/>";
				die();
			}
		}
		return self::$pdo;
	}
}
로그인 후 복사


pdo는 전처리를 지원하며, SQL 삽입을 방지하려면 전처리를 사용하는 것이 좋습니다.

위 내용은 MySQLi와 PDO를 통해 mysql 데이터를 연결하는 PHP에 대한 자세한 설명입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!



관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿