Heim  >  Artikel  >  Datenbank  >  Detaillierte Erklärung der PHP-Verbindung von MySQL-Daten über Mysqli und PDO

Detaillierte Erklärung der PHP-Verbindung von MySQL-Daten über Mysqli und PDO

黄舟
黄舟Original
2017-03-01 13:46:491386Durchsuche

Vorwort

In der tatsächlichen Entwicklung werden Datenbankbetriebsklassen selten selbst geschrieben und meist über einige Frameworks implementiert Um Handbücher auszuleihen, um es selbst zu schreiben, halte ich es für notwendig, die Methode zum Verbinden von PHP mit MySQL zusammenzufassen. PHP kann über MySQL-Erweiterung, MySQL-Erweiterung und PDO-Erweiterung eine Verbindung herstellen, da höhere Versionen von PHP entfernt werden. Daher werden hier nur die beiden anderen Verbindungsmethoden zusammengefasst. Zuerst müssen wir sicherstellen, dass diese beiden PHP-Erweiterungen aktiviert sind. Überprüfen Sie die Konfigurationsdatei php.ini wie folgt:


Tipps: Wenn jemand sagt, dass ich die Erweiterungsbibliothek geöffnet habe (d. h. das „;“ davor entfernt habe), aber immer noch darauf hingewiesen habe, dass die Methoden der mysqli_- oder pdo-Serie nicht gefunden werden können, dann liegt das wahrscheinlich daran weil Sie Das Verzeichnis, in dem sich die Erweiterungsbibliothek befindet, ist nicht angegeben. Suchen Sie den Parameter extension_dir und geben Sie das Verzeichnis an, in dem sich die Erweiterung befindet

extension_dir = "D:/wamp/bin/php/php5.5.12/ext/"

Konfigurationsdatei

Zunächst trennen wir die für die Verbindung mit der Datenbank erforderlichen Konfigurationsdateien, sodass wir sie nicht jedes Mal neu schreiben müssen, sondern sie einfach direkt einbinden oder anfordern. Wenn Sie sich bezüglich include und require nicht sicher sind, können Sie http://www.php.cn/

Dateiname conf.php

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

Verbindung über MySQLi-Erweiterung herstellen

MySQL bietet zwei Möglichkeiten, eine Verbindung zu MySQL herzustellen und unterstützt die Vorverarbeitung. das eine ist objektorientiert und das andere prozessorientiert.

1. Prozessorientierte Verbindung 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 objektorientiert verbinden

$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.

MySQLVorverarbeitung

Erklärt hauptsächlich die Vorverarbeitung der Mysli-Objektprogrammierung mit mysqli_prepare. Ich werde sie nicht vorstellen Bindungsparameter vorverarbeiten Die Parametertypen werden wie folgt beschrieben:

$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();//关闭连接

PDO verwendet PDO, um eine Verbindung zu MySQL herzustellen

pdo unterstützt die Vorverarbeitung und es wird empfohlen, die Vorverarbeitung zu verwenden, um eine SQL-Injection zu verhindern.

Das Obige ist die detaillierte Erklärung der PHP-Verbindung von MySQL-Daten über Mysqli und PDO. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

$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;
	}
}


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn