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

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

黄舟
黄舟원래의
2017-03-01 13:46:491403검색

머리말

실제 개발에서는 데이터베이스 작업 클래스를 직접 작성하는 경우가 거의 없으며 대부분 일부 프레임워크를 통해 구현됩니다. 매뉴얼을 빌려서 직접 작성하기 때문에 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(
		'host'=>'127.0.0.1',
		'user'=>'root',
		'password'=>'',//因为测试,我就不设置密码,实际开发中,必须建立新的用户并设置密码
		'dbName'=>'xxpt',
		'charSet'=>'utf8',
        	'port'=>'3306'
        	);

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

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

1. 프로세스 중심 연결 mysql


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

//1.打开连接
$conn=openDb($dbConf);
//2query方法执行增、查、删、改
$sql='SELECT t.`id1` from `t1` as t';
/*************数据查询***************************/
$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='INSERT INTO `t1`(`id1`,`id2`) VALUES(3,4);';
$rs=$conn->query($sql);
//3.关闭连接
closeDb($conn);


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

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


3.

mysqli전처리

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

$dbConf=include 'conf.php';
//打开
$conn=new mysqli($dbConf['host'],$dbConf['user'],$dbConf['password'],$dbConf['dbName'],$dbConf['port']);
if(!$conn){
	die('数据库打开失败');
}
//执行增删改查
/*************数据查询***************************/
$sql='SELECT * from `t1` as t WHERE id2>?';
$stmt=$conn->prepare($sql);
if(!$stmt){
	die('sql语句有问题');
}
//绑定参数
$id2=2;
$stmt->bind_param('i',$id2);//不能写成bind_param('i',2)
//执行
$stmt->execute();
//将结果绑定发到指定的参数上
$stmt->bind_result($id1, $id2);
//获取结果
while ($tmp=$stmt->fetch()) {
	print_r('id1='.$id1.',id2='.$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)를 참고해주세요!



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