phper需要知道的mysql知识

Jaspersoft Studio 6.20.0 免注册安装指南(附下载链接) 本文提供了Jaspersoft Studio 6.20.0社区版的免注册安装详细指南。文章介绍了绕过官网注册获取安装包的多种可靠途径,并逐步详解了从启动安装器到首次运行的全过程,帮助用户快速完成安装与基础配置,高效开启报表设计工作。 阅读详情

group by[col1,col2,col3]

     将查询出来的数据根据col进行分组,简单理解就是将col1,col2,col3这三列数据相同的记录合成一条,col1,col2,col3因为是一样的很轻松就能合成一条并展示,那其他尾部的记录就可能每条都不一样无法合成,默认是取第一条的记录,或者可以用聚合函数处理3条不同的尾巴,比如求和,求平均然后在展示处理,如下:

order by[col1,col2,col3]

     order by也可以多个字段进行,先col1,排好以后,如果有相同的col1,再根据col2进行排序,同理col3,col也可以简化成1,2,3这种形式,对应select的第一个,第二个,第三个字段。

 

case….when….else….end

     用于加工查询出来的语句,将某一个字段的值进行修改加工

SELECT stud_id, sex=CASE gender
                      WHEN
’男’ THEN ’M’
                      WHEN
’女’ THEN ’F’

          ELSE  ‘F&M’
                    END
FROM stud_info

 

select * from (select[col] from t) aliasname

     可以通过select查询构建一个临时表,表的字段就是select出来的col,注意后面必须加上这个临时表的名字。

 

on duplicate key update

     这个语句主要用在insert语句后面,当insert数据的时候发生唯一索引或者主键冲突的时候,就会对被冲突的那条原数据进行update操作,具体update什么就看你需要了。当然如果没有发生冲突,新数据就直接insert了。

 

group_concat & concat

     concat(str1,str2,str3),如selectconcat(name,sex,age) as info from t1 where id = 1。应该返回info->jamehollman18,注意没有分割符号的,如果str中只要有一个为空,那么返回就会为空。

     group_concat(col1,col2,col3),顾名思义,是在进行groupby时使用的,也是一个聚合函数,可以将之前说的冲突尾巴合成一个新建字段,并且字段之间自动会以”,”分割开。

 

(?=pattern) &(?<=pattern)

     这两个在正则上很重要!两者都是非捕获分组,与(?:pattern)性质一样,列如正则为/zhanhong,(?=hello)/,一个字符串为zhanhong,loveyou,因为zhanhong后面不是hello,所以zhanhong这个字符串不会匹配出来,相应zhanhong,hello就行,注意hello是不会匹配出来的,只是匹配(?=pattern)前面的字符,这个就叫正向预处理。(?!pattern)就与(?=pattern)相反

     第二个是反向的预处理,放在zhanhong前面/(?<=hello),zhanhong/,会匹配hello,zhanhong中的zhanhong,不会匹配其他的,相应的,还有/(?<!hello),zhanhong/。

(?:)是不会单独匹配,但是整个一起的时候它会参与被匹配展示,(?=)这一类更像是修饰作用,从来不会匹配到并展示出来

php建表等操作

     alter table tableaname change colname [datatype][null|not null] [default] , add [primary key(col) | indexindexname(col1,col2,col3) | unique indexname(col1,col2,col3)]

      insert table cloname[datatype] [null|not null] [default] , add [primarykey(col) | index indexname(col1,col2,col3) | unique indexname(col1,col2,col3)]

   creat table tablename (colname [datatype][null|not null] [default] , add [primary key(col) | indexindexname(col1,col2,col3) | unique indexname(col1,col2,col3)]

)


PDO类

     代表 PHP 和数据库服务之间的一个连接,创建方式如下:new PDO($dsn, $user, $password);

最常用的就是他的事务处理beginTransaction,PDO::commit ,PDO::rollBack 

这几个都是pdo类的静态函数。还有几个常用的函数:

这里着重讲下面几个:

PDO::exec    $obj->exec($sql);

     这个函数用于执行一条$sql语句,注意他只返回受影响的记录条数。所以select这种操作就只会返回0,所以尽量不要用返回值判断是否执行成功。

 

PDO::query

     这个函数执行一条sql语句,然后将结果集作为一个PDOstatement对象返回,打印的时候PDO对象只有一个queryString属性,内容是这条sql语句,但是遍历输出时却能打印出查询出来的数据,这里有一点疑惑。注意query出来的数据需要读完以后才能再使用query语句,如果不想读完,可以对PDOstatement使用PDOStatement::closeCursor() 函数。

 

PDO::prepare

     函数作用是预编译一条sql语句,返回PDOstatement对象,这一条sql语句可以使用参数绑定,也就是将值使用“?”或者“:varname_diy”代替,一条sql语句中只能选择其中一种样式来绑定。另外fetch等操作和execute操作都是PDOstatement的函数。

 

PDOstatement类

     PDOstatement实例有两种来源,一个是PDO::query返回以及PDO::prepare返回。

 

PDOstatement::bindColumn

     将查询出来的数据字段分别复制给自己的变量,绑定需要在execute以后才能成功,绑定的时候有两种方式,一种是通过字段号,一种是根据字段名:

$sql = ‘SELECT name, colour, calories FROM fruit’;

$stmt = $dbh->prepare($sql);
    
$stmt->execute();
    
$stmt->bindColumn(1, $name);
    
$stmt->bindColumn(2, $colour);

   $stmt->bindColumn('calories', $cals);

 

然后用fetch获取数据的时候就可以用自己的变量来输出了

    while ($row = $stmt->fetch(PDO::FETCH_BOUND)) {
     
$data = $name . "\t" . $colour . "\t" . $cals . "\n";
      print 
$data;
    }

 

PDOstatement::bindParam

     用于绑定参数,如果占位符是“:varname”,那么第一个参数应该也是它,如果是“?”那么第一个参数是以1开始的序号:

$sth->bindParam(':calories', $calories, PDO::PARAM_INT);

$sth->bindParam(1, $calories, PDO::PARAM_INT);

注意这个函数第二个参数只能是一个变量,而不能是一个具体的值,bindValue就可以是值。第三个参数指定变量的类型,比如PDO::PARAM_STR等等。

 

PDOstatement::bindValue

     与上面类似,只是可以绑定具体的值,

 

PDOstatement::closeCursor

     上面已经提过,就是释放到数据库服务的连接,即时有未读完的数据仍然可以继续下一个查询。

 

PDOstatement::execute   bool PDOStatement::execute ([ array $input_parameters ] )

     执行编译过后的sql语句,也就是PDOstatement对象,除此之外,他也可以解决参数绑定的问题,不需要使用bindcolumn或者bindvalue,原因就是$input_parameters这个变量,对应的列子如下:

 

$sth->execute(array(':calories' => $calories, ':colour' => $colour));

$sth->execute(array($calories, $colour));

 

sql中含有IN操作的解决办法

 

<?php
/*  使用一个数组的值执行一条含有 IN 子句的预处理语句 */
$params = array(1, 21, 63, 171);
/*  创建一个填充了和params相同数量占位符的字符串 */
$place_holders = implode(',', array_fill(0, count($params), '?'));
/*
    
对于 $params 数组中的每个值,要预处理的语句包含足够的未命名占位符 。
    
语句被执行时, $params 数组中的值被绑定到预处理语句中的占位符。
    
这和使用 PDOStatement::bindParam() 不一样,因为它需要一个引用变量。
    PDOStatement::execute() 
仅作为通过值绑定的替代。
*/
$sth = $dbh->prepare("SELECT id, name FROM contacts WHERE id IN ($place_holders)");
$sth->execute($params);
?>

 

PDOstatement::fetch

 

     PDOStatement::fetch ([ int $fetch_style [, int $cursor_orientation = PDO::FETCH_ORI_NEXT[, int $cursor_offset = 0 ]]])

     从一个 PDOStatement 对象相关的结果集中获取下一行。fetch_style 参数决定 POD 如何返回行。fetch_style默认是PDO::FETCH_BOTH,也就是不管以字段名返回,还要以序号返回,所以数组大了一倍。PDO::FETCH_ASSOC就是以字段返回的数组,更多类型看手册。PDO::FETCH_BOUND:返回 TRUE ,并分配结果集中的列值给 PDOStatement::bindColumn() 方法绑定的 PHP 变量。

 

PDOstatement::fetchAll

 

返回一个包含结果集中所有行的数组

     想要返回一个包含结果集中单独一列所有值的数组,需要指定 PDO::FETCH_COLUMN 。通过指定 column-index 参数获取想要的列。

 

PDOstatement::fetchColumn

     PDOStatement::fetchColumn ([ int $column_number = 0 ])

从结果集中下一行单独返回一个列的数据。

你想从行里取回的列的索引数字(以0开始的索引)。如果没有提供值,则 PDOStatement::fetchColumn() 获取第一列。

     如果使用 PDOStatement::fetchColumn() 取回数据,则没有办法返回同一行的另外一列。

 

    

其他重要函数

 

特殊例子

<?php
/* 使用 INOUT 参数调用一个存储过程 */
$colour = 'red';
$sth = $dbh->prepare('CALL puree_fruit(?)');
$sth->bindParam(1, $colour, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->execute();
print(
"After pureeing fruit, the colour is: $colour");
?>

 

更多预定义常量查看手册,至少熟悉常用的几个!!!

中兴B860AV2.1-A刷机避坑指南:晶晨免拆神器+安卓7.1.2固件实测 本文提供中兴B860AV2.1-A机顶盒的详细刷机教程,重点介绍使用晶晨免拆神器配合安卓7.1.2线刷固件包的实操步骤。内容涵盖刷机前的硬件确认、工具准备、软件设置、烧录全过程监控及常见问题解决,旨在帮助用户安全、高效地完成刷机,规避变砖风险,释放设备潜力。 阅读详情

相关推荐

5、OpenClaw(龙虾助手)飞书机器人完整对接指南(2026最新版)

OpenClaw v2026.2.2+ 版本,防火墙内也能正常工作,是目前最稳定、最简单的企业内部AI助手部署方案。

欢迎光临~知1而N的博客 457

PHPer面试指南-MySQL 篇

本书的 GitHub 地址:https://github.com/todayqq/PHPerInterviewGuide 什么是索引,作用是什么?常见索引类型有那些?Mysql 建立索引的原则? 索引是一种特殊的文件,它们包含着对数据表里所有记录的引用指针,相当于书本的目录。其作用就是加快数据的检索效率。常见索引类型有主键、唯一索引、复合索引、全文索引。 索引创建的原则 最左前缀原理...

weixin_34278190的博客 154

TouchSocket TcpService:构建高性能Tcp服务的终极利器

/ 接收到的数据data");// 回复客户端await ((ITcpSessionClient)client).SendAsync("服务端已收到消息!");// 继续执行后续插件TouchSocket的TCPService以极简的API、强大的扩展性和卓越的性能,重新定义了.NET TCP服务的开发体验。无论是物联网平台还是金融级实时通信系统,TCPService均能提供可靠的基础设施支持。立即探索示例项目,开启你的高性能服务开发之旅!扩展阅读如何实现WebSocket服务?

若汝棋茗 的博客 1461

小白PHPer,技术栈总结

工作也有一年半左右,感觉自己接触了很多东西,但又感觉自己会的很少。 写这篇文章,总结看下自己学了哪些,会了哪些,掌握的程度,还需要学什么。 会定期更新,以此来督促自己的进步。 PHP 1、PHP基础 2、PHP数组 3、PHP字符串 4、PHP常用函数 5、PHP面向对象 6、PHP常见坑 7、PHP接口调试 8、PHP7特性 9、Trait 10、ThinkPHP5 11、接口开发 Web ...

无痕之意的博客 702

Axure rp9 中继器新建表格

Axure rp9 中继器新建表格

weixin_49295490的博客 1652

数据库崩溃恢复机制:REDO日志与UNDO日志详解

在数据库管理系统中,事务的持久性和一致性是至关重要的。为了保证在系统崩溃或发生故障时数据不会丢失,数据库引入了恢复机制。其中,REDO日志和UNDO日志是两种关键的恢复技术。本文将详细描述这两种日志的作用、工作原理以及它们在数据库崩溃恢复中的应用。

My_wife_QBL的博客 1413

3年PHPer的面试总结

之前看到一篇文章《八年phper的高级工程师面试之路》,然后最近我也在面试,面了有百度、360、滴滴、小米、微博、58赶集、搜狗、瓜子二手车等公司,最后也进了心仪的公司,面试过程中学到了很多东西,所以也想和大家分享一下,虽然我的工作经验才3年左右。 注:下面题目的答案只是我思考和查询资料的结果,并不代表完全准确,有错误的地方大家可以指正,有更好的方案可以提出,大家一起讨论。 算法 1.反转函数的实...

weixin_34162401的博客 483

手把手教你学Simulink——基于Simulink的固态变压器(SST)多级协同控制

摘要:本文详细介绍了基于Simulink的固态变压器(SST)多级协同控制方法。SST作为新一代智能电网核心设备,通过AC-DC整流、DC-DC隔离和DC-AC逆变三级架构实现电能高效转换。针对多级耦合难题,提出能量-功率协同控制策略:纵向解耦电压环与功率前馈,横向联动级间功率指令。在Simulink中搭建10kV/400V系统模型,实现直流母线电压波动<2%的动态性能。特别设计了负载突变时的三级协同机制,通过虚拟惯性算法和前馈控制实现快速响应。文章包含完整的建模步骤、控制推导和参数设置,为电力电子工

MHD0815的博客 195

MYSQL学习笔记之锁

mysql服务器的逻辑架构图:每个客户端连接mysql服务器时都会在进程中创建一个线程,mysql5.5之后提供了一个API,可以使用池中少量的线程服务大量的连接。1、并发控制:假如有多个用户在同时读取同一条数据,这时并不会发生错误,但如果有一个操作在删除这条数据,那么结果就不可预测。这时需要并发控制来解决这类问题。在处理并发读或者写时,可以通过实现一个有两种类型的锁组成的锁系统,这两种锁被称为共...

crazyPHPer的博客 382

WindowsServer2022蓝牙音频开启方法

为Windowsserver 2022 添加蓝牙音频驱动的方法和工具

thebestismin的专栏 2706

数字盲水印嵌入和提取的实现基于小波变换DWT算法

数字盲水印是指在不知道原始图像的情况下,在其上嵌入水印并在后续的提取过程中能够恢复出原始水印的一种技术。本文介绍的数字盲水印嵌入和提取的实现方法基于小波变换DWT算法。具体来讲,DWT将信号或图像进行二次下采样和卷积滤波,使得高频分量的图像信息被集中在一个小区域内,方便进行嵌入和提取操作。其中 a 表示嵌入强度,而 watermark 则是用于嵌入的水印图像,这里我们嵌入的是一个全灰的图像。通过以上的代码,我们可以实现数字盲水印的嵌入和提取,并在一定程度上保护数字图片的版权安全。

HackWhisper的博客 515

phper技能树

前端 制作图表 highcharts http://www.hcharts.cn/demo/hi... Echart 样式框架 Bootstrap http://v3.bootcss.com/compone... 文档树操作 jQuery 前端辅助系,插件 ,引擎

Yino 1255

【OpenClaw企业级智能体实战】第04篇:OpenClaw成本优化实战——Token消耗降96%!claude-mem+OpenViking从入门到精通

OpenClaw作为企业级智能体框架,凭借强大的自动化能力成为企业数字化转型的热门工具,但原生机制导致的上下文冗余问题,让众多用户面临“Token消耗失控”的困境——单周账单数千元的案例屡见不鲜。本文基于阿里云实测数据与开源工具官方文档,先深度拆解OpenClaw成本黑洞的核心成因(记忆碎片化、Token指数级膨胀),再系统讲解两款核心优化工具(claude-mem单Agent记忆管理、OpenViking多Agent集群底座)的底层原理、算法架构与实现逻辑,提供从环境搭建、工具集成、参数调优到安全部署

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 705

经典的PHPer为什么被认为是草根?

PHPer是草根吗?从PHP诞生之日起,PHP就开始在Web应用方面为广大的程序员服务。同时,作为针对Web开发量身定制的脚本语言,PHP一直秉承简单、开源的思想,这也使得PHP得以快速的发展,并且大力地推动Web2.0的出现与发展。但是,长期以来,PHPer(PHPProgrammers)被认为是处于草根阶层的程序员,被认为是技术含量少,层次低的程序员。这点在国内尤其突出。记得一个技术主管...

weixin_30273501的博客 133

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

PHPer是草根吗

以下文字并没有非常多的技术词汇,所以只要对PHP感兴趣的人都可以看看。 PHPer是草根吗? 从PHP诞生之日起,PHP就开始在Web应用方面为广大的程序员服务。同时,作为针对Web开发量身定制的脚本语言,PHP一直秉承简单、开源的思想,这也使得PHP得以快速的发展,并且大力地推动Web2.0的出现与发展。但是,长期以来,PHPer(PHP Programmers)被认为是处于草根阶层的程序员...

weixin_30628801的博客 121

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

PHPer为什么被认为是草根?

原文:http://www.phpchina.com/?1/action_viewspace_itemid_2520.html 开篇注释:以下文字并没有非常多的技术词汇,所以只要对PHP感兴趣的人都可以看看。 PHPer是草根吗? 从PHP诞生之日起,PHP就开始在Web应用方面为广大的程序员服务。同时,作为针对Web开发量身定制的脚本语言,PHP一直秉承简单、开源的思想,这也使得PHP...

编程资料大全 97

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

PHPer进阶之路

转自:https://blog.youkuaiyun.com/helloworld_dream/article/details/82180843 记录并学习先拉过来,后续慢慢补充完善。 如果你现在处于以下几种状态,本资料非常适合你: * 准备换工作,不知道从哪开始准备 * 技术遇到瓶颈,不知道该学什么 * 准备学 PHP,但不知道领域有多深 ## 基础篇 * 了解大部分数组处理函数 * 字符串处理...

alianada的博客 689

PHPER 之路

一、php 高级程序员所要掌握的技能 很多工作几年的 php 开发者都会有这样的迷茫,php 开发多了,无外乎“增删改查调接口”,真的是这样吗? 实际上开发者除了把自己当成 php 程序员,更应该关注 php 以外的东西,将自己定位于能熟练使用 php 搭建系统的工程师。 我认为高级 php 工程师可以往几个方向去发展: 1.1、深度方向 一个工程师要往高阶发展,必须同时强化几个...

echojson的专栏 615

PHPer面试宝典

我坚信,机会永远属于有准备的人,我们与其羡慕他人的成功,不如从此刻起,积累足够多的知识和面试经验,为将来进入更好的公司做好充分的准备! 想让面试官在短短的几十分钟内认可你的能力?想在最短的时间内收获 Java 技术栈最核心的知识点?想要更全面更深入的了解 Java 技术?这篇文章给你想要的所有答案。 本 Chat 你将会获得以下知识: PHP基础知识 PHP进阶知识 MySQL高频问题 redis...

GitChat 430

欢迎STAR,《PHPer的成长之路》

地址:https://github.com/han8gui/PHPer PHP开发知识结构 目录 顺序:基础 => 进阶 => 原理 => 架构 => 业务 => 软技能 开发工具 环境搭建 编程语言 代码质量 PHP 安全 数据库 框架 计算机基础 编程知识储备 架构 运维&统计 微服务 应用 文档规范 开发流程 软技能 附录 开发工具 编辑器和IDE...

纸上得来终觉浅 520

php要掌握的内容,入门PHPer需要掌握的哪些内容?

做为一个小新手,想要成为一个PHPer,你必须把LAMP搞熟练(这是一套网站开源开发的各种工具集合,包括Linux,Apache,MySQL,PHP,是网站开发的核心配置,前期肯定要把这些软件的安装基本操作完成熟悉。)下面本文就为大家介绍一下入门PHPer需要掌握的哪些内容。1.Linux服务器操作系统(一般服务器为了安全考虑都会使用Linux,也有少部分使用Windows),需要掌握的内容:基本...

weixin_35692051的博客 142

PHPer的技能栈

写在前面 当我们谈到PHP开发,我们其实是在谈论网站,数据库,缓存,session,负载均衡等等等等一些列复杂技术的集合。所以,PHP的技能站也比一般得要长很多。 PHP基础 在这里,你需要了解的是: 在各个平台安装php并用php内置的web服务器成功的见到“Hello PHP”界面。 PHP函数式编程语法,面向对象语法,命名空间。 PHP标准库的熟悉。 调试工具:起码要知道xdebug的使用方法。 依赖包管理工具的安装、使用、原理,最常用的:composer,pear。 语法性能及原理

callmedaphy的专栏 227

PHPer人员常犯的10个MysqL错误,我都看不下去了

对于大多数web应用来说,数据库都是一个十分基础性的部分。如果你在使用PHP,那么你很可能也在使用MySQL—LAMP系列中举足轻重的一员。对于很多刚入手的朋友来说,使用PHP可以在短短的时间之内轻松地写出具有特定功能的代码。但是,构建一个稳定可靠的数据库却需要花上一些时日和相关技能。下面列举了我们曾经犯过的最严重的10个MySQL相关的错误(有些同样也反映在其他语言/数据库的使用上)。1、使用M...

weixin_34199335的博客 165

不做浮躁的PHPer 掌握知识简述

   很多学PHP的人一直也搞不清楚,一个PHP程序员和Java程序员或者是.net程序员有什么不同,告诉你,其实都一样!  没有什么不同,下面的内容,就是针对一个Java程序员掌握的技能对比PHP来说的!告诉你,它们其实是一样的,不过是工具而已,没有高低贵贱之分。  只不过你不熟练,不知道而已!  1、语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信

YC.PENG的专栏 524
上一篇: Nginx与Apache的比较
下一篇: 揭开C语言指针的面纱-part1
jj_jameholl
博客等级 码龄10年 5粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值