집 >데이터 베이스 >MySQL 튜토리얼 >Mysqli와 PDO를 통해 mysql 데이터를 연결하는 PHP에 대한 자세한 설명
실제 개발에서는 데이터베이스 작업 클래스를 직접 작성하는 경우가 거의 없으며 대부분 일부 프레임워크를 통해 구현됩니다. 매뉴얼을 빌려서 직접 작성하기 때문에 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는 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);
$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();
$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 '</br>'; } //关闭 $stmt->free_result();//释放结果 $stmt->close();//关闭预编译的指令. $conn->close();//关闭连接
$dbConf=include 'conf.php'; //打开 $pdo=myPDO::getInstance($dbConf); /*************数据查询***************************/ $sql='SELECT t.`id1` from `t1` as t'; $rs=$pdo->query($sql); $data=$rs->fetchAll();//取出所有结果 print_r($data); /*************数据更新***************************/ $sql='UPDATE t1 SET t1.`id1`=11 WHERE t1.`id1`=1'; $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['host'].";port=".$dbConf['port'].";dbname=".$dbConf['dbName']."; charset=".$dbConf['charSet']; try { self::$pdo = new PDO($dsn,$dbConf['user'], $dbConf['password'], 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 삽입을 방지하려면 전처리를 사용하는 것이 좋습니다.