php连接mysql

mysql 扩展库连接:

<?php
//mysql 扩展库操作mysql数据库步骤如下

//1.获取连接

 $conn = mysql_connect("localhost", "root", "root");
 
 if(!$conn){
 	die("Could not connect: " . mysql_error());
 }else{
 	echo "connect success<br/>";
 }


//2.选择数据库

 mysql_select_db("php");
 
//3.设置操作编码
mysql_query("set names gbk");
 
//4.发送指令sql(ddl 数据定义语句,dml(数据操作语句 update,insert,delete),dql(select ).dtl(事务语句 rollback commit...))
$sql = "select * from user1";
//5.接收返回的结果,并且处理
$result = mysql_query($sql,$conn) or die("Invalid query: " . mysql_error());

while ($row = mysql_fetch_row($result)){
// 	echo "<br/>$row[0]--$row[1]--$row[2]";

	foreach ($row as $key=>$val){
		echo "---$val";
	}
	echo "<br/>";
}

//6.释放资源,关闭连接
mysql_free_result($result);
mysql_close($conn);//这句代码可以不写,建议写上
?>

dml语句实例:

<?php
$conn=mysql_connect("localhost","root","root");

if(!$conn){
	die("err".mysql_error());
}

mysql_select_db("php") or die("select err".mysql_error());

mysql_query("set names gbk");

//$sql = "insert into user1(name,psw,email,age) values('小明',md5('123'),'xiaoming.qq.com',34)";

//$sql = "delete from user1 where id=8";

$sql = "update user1 set name='金玮' where id=3";
$res = mysql_query($sql,$conn);


if(!$res){
	die("query err".mysql_error());
	
	return;
}


if(mysql_affected_rows($conn) > 0){
	echo "<p>success query and some data find</p><br/>";
}else {
	echo "<p>没有受影响的行数。</p><br/>";
}



?>

封装mysql 操作:

<?php

	header("Content-type: text/html;charset=utf-8");
	
	class SqlTool{
		
		private $conn;
		private $host="localhost";
		private $user ="root";
		private $password="root";
		private $db = "vibc";
		
		function SqlTool(){
			$this->conn = mysql_connect($this->host,$this->user,$this->password);
			
			if(!$this->conn){
				die("connct mysql db failed.".mysql_error());
			}
			
			mysql_select_db($this->db,$this->conn);
			mysql_query("set names gbk");
		}
		
	public function close_connect(){
			if(!empty($this->conn)){
				mysql_close($this->conn);
			}
		}
		
		public function execute_dql($sql){
			$res = mysql_query($sql,$this->conn) or die("execute_sql error".mysql_error());
			return $res;
		}
		
		 function execute_dql2($sql){
			$arr = array();
			
			$res = mysql_query($sql,$this->conn) or die("execute_sql error".mysql_error());
			
			$i=0;
			while($row = mysql_fetch_assoc($res)){
				$arr[$i++]=$row;
			}
			mysql_free_result($res);
			return $arr;
		}
		
	    function execute_dml($sql){
			$b = mysql_query($sql,$this->conn);
			
			if(!$b){
				return -1;//failed
			}elseif(mysql_affected_rows($this->conn) > 0){
				return 0;//success
			}else{
				return 1;//success but no data
			}
		}
	}

?>



mysqli 扩展库连接 mysql

面向对象方式:

<?php

	header("Content-type: text/html;charset=utf-8");
	
	$mysqli = new mysqli("localhost", "root", "root", "php");
	
	if ($mysqli->connect_error) {
		die("connect error(".$mysqli->connect_errno.")");
	}
	
	echo "connect success.<br/>";
	
	//发送数据
	$sql = "select * from user1";
	$res = $mysqli->query($sql);
	
	//获取数据
	 while ($row = $res->fetch_row()) {
        //printf ("%d--%s---%s---%s---%d)<br/>", $row[0], $row[1],$row[2],$row[3],$row[4]);
        
	 	foreach ($row as $key=>$val){
	 		echo "----$val";
	 	}
	 	
	 	echo "<br/>";
    }

    /* free result set */
    //释放内存
    $res->free();

    //关闭连接
    $mysqli->close();
?>

mysqli 面向过程的方式:

<?php
	header("Content-type: text/html;charset=utf-8");
	$mysqli = mysqli_connect("localhost","root", "root","php");
	
	if(!$mysqli){
		die("connect failed ".mysqli_connect_error($mysqli));
	}
	
	$sql = "select * from user1";
	
	$res = mysqli_query($mysqli, $sql);
	
	while($row = mysqli_fetch_row($res)){
	
		foreach ($row as $key=>$val){
			echo "---$val";
		}
		
		echo "<br/>";
	}
	

	mysqli_free_result($res);
	
	mysqli_close($mysqli);
?>


批量执行dml语句:

<?php
	header("Content-type: text/html;charset=gbk");

	//批量执行sql语句
	$mysqli = new mysqli("localhost", "root", "root", "php");
	
	if($mysqli->connect_error){
		die($mysqli->connect_error);
	}
	
	$sql = "insert into user1(name,psw,email,age) values('zjw',md5('123'),'zjw@sohu.com',24);";
	
	$sql .= "insert into user1(name,psw,email,age) values('sonjiang',md5('123'),'sonjiang@sohu.com',45);";
	
	$sql .= "insert into user1(name,psw,email,age) values('lujueyi',md5('123'),'lujunyi@sohu.com',45);";
	
	$b = $mysqli->multi_query($sql);
	
	
	if($b){
		echo "执行成功!<br/>";
	}else{
		echo "执行失败!<br/>";
		echo $mysqli->error;
	}
	
	$mysqli->close();
	
	
?>

批量执行dql语句

<?php
	header("Content-type: text/html;charset=utf-8");
	
	$mysqli =new mysqli("localhost", "root", "root", "php");
	
	if($mysqli->connect_error){
		die($mysqli->connect_error);
		exit();
	}
	
	
	$sqls = "select * from user1;";
	$sqls .= "select * from user2;";
	
	if($res = $mysqli->multi_query($sqls)){
		do{
			if ($result = $mysqli->store_result()) {
				while ($row = $result->fetch_row()) {
					
					foreach ($row as $key=>$val){
						echo "---$val";
					}
					
					echo "<br/>";
				}
				$result->free();
			}
			/* print divider */
			if ($mysqli->more_results()) {
				echo "<br/>---------new results find----------------<br/>";	
			}else{
				break;
			}
		}while($mysqli->next_result());
	}
	
	/* close connection */
	$mysqli->close();
?>


mysql 事务:

<?php

//事务用于保证数据的一致性
	$mysqli = new mysqli("localhost", "root", "root", "php");
	
	if($mysqli->connect_error){
		die($mysqli->connect_error);
		exit();
	}
	
	/* set autocommit to off */
	$mysqli->autocommit(FALSE);

	$sql1 = "update account set balance=balance-2 where id=1";
	$sql2 = "update account2 set balance=balance+2 where id=2";
	
	$b1 = $mysqli->query($sql1) ;
	$b2 = $mysqli->query($sql2) ;
	
	
	
	if(!$b1 || !$b2) {
		echo "failed<br/>".$mysqli->error;
		$mysqli->rollback();
	}else{
		echo "success<br/>";
		/* commit transaction */
		$mysqli->commit();
	}
		
	$mysqli->close();
?>




在使用 PHP 连接 MySQL 数据库时,需要确保几个关键点:数据库服务正常运行、连接参数正确、以及 PHP 扩展支持 MySQL 连接。 ### PHP 连接 MySQL 的基本方式 PHP 提供了多种方法来连接 MySQL 数据库。最常用的方式包括: - 使用 `mysqli`(MySQL Improved) - 使用 `PDO`(PHP Data Objects) #### 1. 使用 `mysqli` 连接 MySQL ```php <?php $host = 'localhost'; // 数据库主机名 $username = 'root'; // 数据库用户名 $password = ''; // 数据库密码 $database = 'test_db'; // 数据库名称 // 创建连接 $conn = new mysqli($host, $username, $password, $database); // 检查连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } echo "成功连接到数据库"; ?> ``` 如果 MySQL 服务未启动或配置错误,可能会出现连接失败的情况,例如报错 `Can't connect to MySQL server on 'localhost' (10061)` [^3]。这种情况下可以尝试以下操作: - 确保 MySQL 服务已经启动。 - 检查 `my.ini` 配置文件是否放置正确,并确认端口未被占用。 - 若服务异常,可尝试通过命令行删除并重新安装 MySQL 服务 [^3]。 #### 2. 使用 `PDO` 连接 MySQL ```php <?php $host = 'localhost'; $dbname = 'test_db'; $user = 'root'; $pass = ''; try { $pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); echo "成功连接到数据库"; } catch (PDOException $e) { die("连接失败: " . $e->getMessage()); } ?> ``` `PDO` 是一种更通用的数据库访问层,适用于多种数据库系统,并且提供了更安全的预处理语句功能。 ### 常见问题排查 - **网络问题**:如果连接的是远程 MySQL 服务器,需确保服务器允许外部连接,通常需要配置防火墙规则和 MySQL 用户权限 [^2]。 - **服务状态**:本地开发环境如 PHPStudy 中,若版本不兼容也可能导致连接失败,建议升级到最新版本以获得更好的兼容性 [^1]。 - **端口冲突**:默认 MySQL 使用 3306 端口,可通过 `netstat -ano` 查看该端口是否被其他进程占用 [^3]。 ### 调试建议 - 在 PHP 配置文件 `php.ini` 中启用 `display_errors=On`,这样可以在页面上看到具体的错误信息。 - 确认 PHP 是否加载了必要的扩展,如 `php_mysqli.dll` 或 `php_pdo_mysql.dll`。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值