php通过Mysqli和PDO连接mysql数据详解

Mac新手避坑指南:用phpstudy搞定PHP环境+MySQL连接(附hosts权限解决方案) 本文为Mac新手提供详细的phpstudy环境配置指南,涵盖PHP环境搭建、MySQL连接及hosts权限解决方案。通过实战步骤和常见问题排查,帮助开发者快速搭建稳定的开发环境,特别适合PHP初学者和Mac平台开发者。 阅读详情

配置文件
首先我们将连接数据库需要的配置文件,单独出来,这样就不需要每次都去写,需要的时候,直接include或者require包含进来就可以了。如果关于include与require不清楚的,可以查考http://blog.youkuaiyun.com/hsd2012/article/details/51089785

文件名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 '</br>';  
}  
//关闭  
$stmt->free_result();//释放结果    
$stmt->close();//关闭预编译的指令.    
$conn->close();//关闭连接    
预处理绑定参数中参数类型说明如下

php使用PDO方式连接mysql
$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注入。
PHP02——php开发提速 之 在Mac上利用phpstudy实现多版本PHP与数据库的灵活切换 本文详细介绍了在Mac系统上使用phpstudy集成环境管理工具,实现多版本PHP与数据库灵活切换的完整方案。通过图形化界面,开发者可以轻松管理PHP 7.x至8.x以及MySQL 5.7/8.0等不同版本,为不同项目创建独立环境,并确保代码与数据库连接稳定,从而大幅提升开发效率,告别环境配置冲突的烦恼。 阅读详情

相关推荐

PHP+MySQL留言板开发全解析:从数据库设计到安全防护

在Web开发入门阶段,留言板是理解动态网站核心逻辑的经典项目。它串联起前端表单、后端处理逻辑与数据库交互,是掌握增删改查、分页和权限管理等基础能力的绝佳载体。实现留言板通常采用原生PHP配合MySQL,这样能清晰看到数据从页面到数据库的完整流转。数据库设计上需注意使用utf8mb4字符集以兼容表情符号,并选择InnoDB引擎保证数据安全。同时,安全防护是开发中不可忽视的环节,SQL注入和XSS攻击是留言板最常见的威胁,使用预处理语句(如prepare)和输出转义(htmlspecialchars)是有效的防

weixin_32687875的博客 319

php函数的封装mysqli_error报错,Expected type ‘mysqli‘. Found ‘false‘

今天在封装数据库判断的时候,出现了一个很头疼的错误: 我这样封装的函数,为什么会报错!!(环境版本PHP7.4 mysql8.0) 函数体里面的mysqli_error和mysqli_errno的参数处报错 报错内容是:Expected type ‘mysqli’. Found ‘false’. function my_error($link, $sql) { //执行SQL语句 $query = mysqli_query($link, $sql); //判断 if (!

qq_46634307的博客 1844

ROS 2实战:用MoveIt Task Constructor让机械臂完成抓取任务(附避坑指南)

本文详细介绍了如何在ROS 2环境中使用MoveIt Task Constructor框架,为Franka Panda机械臂构建一个完整的拾取放置任务流水线。通过分解任务阶段、配置规划器并处理实际部署中的常见问题,帮助开发者从基础运动规划升级到可靠的多步骤任务编排,并附有核心避坑指南。

vvv99的博客 508

PHP使用PDO连接不同的 SQL 数据库

PDO(PHP 数据对象)定义了一个轻量级、一致的接口,用于在 PHP 中访问许多不同的 SQL 数据库。无论我们当时碰巧使用的特定数据库系统如何,您都可以使用单个界面编写和执行数据库查询。PDO 用于安全编程的主要好处是准备好的语句。 PDO 提供了一个数据访问抽象层,这意味着,无论您使用哪个数据库,您都可以使用相同的函数来发出查询和获取数据。 例如,您已经使用 MySQLi 编写了一个应用程序,现在您想要迁移您的应用程序以使用 PostgreSQL。MySQLi 和 PostgreSQL 使用不同.

allway2的博客 1254

用LangFuse+LangChain打造可观测的AI应用:从埋点到成本监控实战

本文详细介绍了如何将开源可观测性平台LangFuse深度集成到基于LangChain构建的AI应用中,特别是电商客服机器人场景。通过从基础SDK集成、提示词管理到成本监控的完整实战,帮助开发者实现对LLM应用内部工作流的清晰追踪、问题排查与费用分析,从而打造稳定、可控的生产级AI应用。

dapp9builder的博客 711

SDIO_WiFi驱动学习之SDIO架构介绍及源码分析

一、引言 因为WiFi驱动比较复杂,所以WiFi驱动的博客将分为两篇来写。 本篇博客主要介绍Linux下的SDIO架构及源码分析。 二、SDIO WiFi SDIO-Wifi模块是基于SDIO接口的符合wifi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈,能够实现用户主平台数据通过SDIO口到无线网络之间的转换。SDIO具有传输数据快,兼容SD、MMC接口等特点。 对于SDIO接口的WiFi,首先,它是一个SDIO的卡设备,然后具备了WiFi的功能。所

陈子陌的博客 1万+

php mysql 操作

一种连接方式: 连接数据库(主机,用户名,密码) $connect=mysql_connect("localhost","root",""); 选择数据库 mysql_select_db(database,connection) 不选择直接在表前+database名 $mysql=mysql_query("select * from mis.mis_user",$conne

shutFuckingup的专栏 528

AgentScope实战训练营:构建计划可视化管理和HITL的AI智能计划助手

本文基于AgentScope Java SDK和Spring Boot WebFlux,从零构建一个支持SSE流式对话、计划可视化管理和HITL的AI智能计划助手Web应用PlanNotebook。涵盖项目架构设计、ReActAgent初始化、自定义工具注册、Hook机制实现、SSE事件协议定义、前端流式渲染等核心技术点,提供完整可运行的代码示例和详细的REST API参考。

program哲学 400

PHP PDO方式访问Mysql数据库实例

<?php $dsn = 'mysql:dbname=menagerie;host=127.0.0.1;port=3306'; $user = 'root'; $password = ''; try { $dbh = new PDO($dsn, $user, $password); } catch (PDOException $e) { die('Connection failed: '.$e->

sunnyzhangwenhan的专栏 485

硬核入门!Python爬虫实战:爬取豆瓣读书TOP250,书名+评分+简介,一键生成精美Excel书单(2026避坑版)

通过这个实战,你不仅获得了一份珍贵的豆瓣TOP250书单HTTP请求与响应的本质。HTML解析的核心技巧。反爬虫的基本应对策略。数据清洗与存储的完整流程。爬虫是通往数据世界的一把钥匙。现在,钥匙在你手中,去探索更多有趣的数据吧!

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 546

Transformer实战(30)——Transformer注意力机制可视化

在本节中,我们讨论了人工智能面临的最重要问题之一:可解释人工智能 (explainable artificial intelligence, XAI)。随着语言模型的不断发展,可解释性成为一个严峻的问题。本节中,我们从 Transformer 的角度出发,研究了 Transformer 架构中的自注意力机制,尝试通过各种可视化工具理解这些机制的内部过程。

盼小辉丶的博客 2665

pdo mysql dsn_PDO连接数据库及DSN详解

PDO构造函数在PDO中,要建立与数据库的连接需要实例化PDO的构造函数,PDO构造函数的语法如下:__construct(string $dsn[,string $username[,string $password[,array $driver_options]]])参数说明如下dsn:数据源名,包括主机名,端口号和数据库名称。username:连接数据库的用户名password:连接数据库的...

weixin_34441588的博客 369

机器人中的数值优化(十四)——罚函数法(Penalty Method)、障碍函数法(Barrier Method)、拉格朗日松弛法(Lagrangian Relaxation)

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,下半部分介绍带约束的优化,中间会穿插一些路径规划方面的应用实例

慕羽★的博客 5221

pdo连接mysql数据库_php通过Mysqli和PDO连接mysql数据详解

前言在实际开发中,关于数据库操作类,很少是自己去写,大多是通过一些框架去实现,突然自己去写,还是需要借阅手册之类,于是我觉得有必要去总结一下,php连接mysql的方法,php连接mysql,可以通过mysql扩展、mysqli扩展,pdo扩展,因为高版本的php将移除mysql_系列方法,故在此只总结另外两种连接方式。首先我们得确保php的这两个扩展是否已经打开,查看php.ini配置文件如下:...

weixin_42458282的博客 416

第3章: MMU Interval Notifier 区间通知器的核心原理⭐

摘要:区间级内存通知机制分析 本文分析了Linux内核中区间级内存通知机制(mmu_interval_notifier)的设计原理与实现。该机制针对传统全局通知(mmu_notifier)存在的性能开销大、无法精确控制等问题,通过引入区间树(Interval Tree)实现精确匹配,仅当内存变化与注册区间重叠时才触发回调。核心优势包括:1)O(log n + k)的高效查找性能;2)支持独立管理各内存区间;3)实现高并发处理不同区间的失效事件。

图形/计算GPU的驱动与虚拟化技术分享园地 2026

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

从phpinfo()到实战:手把手教你用phpstudy在Mac上玩转mysqli和PDO连接MySQL

本文详细介绍了在Mac平台上使用phpstudy快速搭建PHP环境并连接MySQL数据库的实战指南。从phpinfo()检查环境配置到mysqli和PDO两种连接方式的深度对比与实战示例,帮助开发者高效实现数据库操作,提升开发效率与安全性。

weixin_30776273的博客 490

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

PHP连接到mysql的方法--mysqli和PDO

原文:https://blog.csdn.net/llittlepig/article/details/38272769   php连接到mysql数据库,经典的方式就是使用mysql_connect(),具体代码如下: mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error()); mysql_select_db($db...

彳亍的博客 246

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

超越localhost:用phpstudy在Mac上快速创建多站点并测试MySQL连接(mysqli/PDO实战)

本文详细介绍了如何在Mac上使用phpstudy快速创建多站点并测试MySQL连接,涵盖mysqli和PDO两种数据库操作方式。通过实战示例,帮助开发者高效配置开发环境,实现项目隔离与数据库安全连接,提升PHP开发效率。

weixin_42557803的博客 230

【实战指南】基于PHP与MySQL的Web数据库应用开发全流程解析

本文详细解析了基于PHP与MySQL的Web数据库应用开发全流程,从环境搭建、数据库设计到CRUD功能实现,涵盖了MySQLi和PDO两种连接方式。通过新闻管理系统实战案例,帮助开发者掌握数据库系统(DBMS)的核心应用,提升Web开发效率与安全性。

weixin_28314575的博客 383

PHP后端十年:从0到资深开发者的10堂必修课【第3篇】

本文是《PHP后端十年》系列的第3篇,聚焦数据库操作与设计。文章对比了MySQLi和PDO两种PHP数据库连接方式,推荐使用跨数据库兼容的PDO作为标准方案。详细介绍了PDO的核心操作,包括连接配置、预处理语句防注入、事务处理等最佳实践。同时讲解了数据库设计基础,包括索引优化原则和表关联设计(一对一、一对多、多对多关系)。本文为PHP开发者提供了从基础连接到数据库设计的完整知识体系,帮助开发者构建安全高效的数据库应用。

程序员【夜珀】的博客 391

CTF - 在线 IDE 数据库查询题 解题全流程

这道题是典型的题,核心考点为:PHP 连接 MySQL 数据库、执行 SQL 查询、获取表中 flag 数据。

SoleShow_的博客 170

PHP数据库交互实战指南

PHP与数据库交互主要通过扩展库实现,常见方式包括MySQLi(MySQL Improved)和PDO(PHP Data Objects)。SQL注入漏洞的核心原理是通过构造恶意输入,绕过应用程序的身份验证逻辑,直接操纵后端数据库查询。攻击者通过输入特殊字符或SQL片段,改变原始SQL查询的逻辑结构。PDO支持多种数据库(如MySQL、PostgreSQL等),提供统一接口,适合需要跨数据库的场景。是SQL注释符,后续条件被忽略,仅验证用户名。恒为真,可能返回所有用户数据。使用完成后显式关闭连接(

ooos12的博客 219

PHP怎么连接Mysql数据库

PHP连接mysql数据库是PHP新手们必须要掌握的一项技能,只要掌握了PHP对数据库进行增删改查等操作,就可以写出一些简单且常见的程序。如留言表,新闻页等。本篇文章主要给大家详细介绍PHP连接Mysql数据库的两种常用方法。

weixin_44023495的博客 6425
上一篇: PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
下一篇: MySql优化-索引命中
y_server
博客等级 码龄11年 6粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值