php,mysql经典案例分析

篇一:第5讲:mysql应用及其案例(查 增 删 改)

mysql

1.php有三种方式来操作我们的mysql数据库

①mysql 扩展库

②mysqli数据库

③pdo

2.3层结构示意图

3.mysql扩展库就是一堆函数,是php设计者提供给程序员用于完成对mysql数据库的各种操作(CRUD).CRUD:增删该查

4.

char:固定的空间大小

varchar :可变的空间

5.细节

primary key 主键

auto_increment 自增长

unsigned无符号

表的应用

1.建一张表

create table user(

id int primary key auto_increment,

name varchar(32) not null,

password varchar(64) not null,

email varchar(128) not null,

age tinyint unsigned not null

);

2.添加数据(set names gbk;)

insert into user

(name,password,email,age)

values

('qw',md5(‘123’),'qw@suhu.com',31),

('er',md5(‘1234’),'er@suhu.com',32),

('as',md5(‘12345’),'as@suhu.com',33);

注:md5(‘##’) 对输入的数进行加密

mysql扩展库操作mysql数据库步骤

1.获取连接

2. 选择数据库

3. 设置操作编码(建议有)

4. 发送指令sql ;调回结果!!

ddl:数据定义语句

dml: 数据操作语言(update insert delete)

dql: 数据查询语句(select)

dtl: 数据的事物控制语句(rollback commit…)

5.接受并处理结果

6.释放资源

7.(关闭连接)

其它

1. \s 查询当前图表所在的库;

同样也能用 show tables;(必须是在表格内)

案例

注:

1. mysql_query($#1,$#2);//#1表示要说的话 #2表示用哪个手机说 发送一条mysql 语句

2. mysql_fetch_row($res);

从返回结果中取得一行作为枚举数组(依次调用该函数返回的是下一行)

3. mysql_free_result($res);

释放结果内存

代码如下:

<?php

$conn=mysql_connect("localhost","root","111111"); //11111111111111111 if(!$conn){

die("连接失败".mysql_error()); } mysql_select_db("php");mysql_query(set names usf8) ; $sql="select * from user";//2222222222222222 //333333333333 //4444444444444 $res=mysql_query($sql,$conn);//res表示结果集,可以理解为就是一张表。//5555接受 //mysql_fetch_rows($res)会依次取出res的下一行数据,赋值给row //row 是数组 while($row=mysql_fetch_row($res)){//555555555555 处理(显示) /*第1种取法 echo "<br/> $row[0]--$row[1]--$row[2]--$row[3]"; echo "<br/>"; */ //第2种取法 foreach($row as $key=>$val){echo"--$val"; }echo "<br/>"; }

//释放内存 必须有 //断开连接可有可无 //666666666 mysql_free_result($res); mysql_close($conn);

?>

细节:

1.使用完 $res 结果后,一定要及时释放资源。

2.mysql_close() 如果没有的话,系统也会自动关闭。

3.$row=mysql_fetch_row($res)

mysql_fetch_row()函数将$res 的下一行取出来交给数组 $row.

4. $res=mysql_query($sql,$conn);

此处$res 接受的是资源类型

5.程序中的$res用于代表sql语句的执行结果。

①如果执行的是dml(增、删、改)语句,则返回bool

②如果执行的是dql语句,则返回查询结果 mysql result(资源类型)

?

我们可以利用如下方式,从 mysql result 中取出查询结果 mysql_fetch_row($res) 返回一个索引数组 (推荐) mysql_fetch_assoc($res) 返回一个关联数组 // echo $row[‘id’]; (本文来自:WwW.xiaOCaofAnweN.Com 小草范文 网:php,mysql经典案例分析)mysql_fetch_array($res) 返回索引数组和关联数组 mysql_fetch_object($res) 把一行数据,当做一个对象返回 // echo $row->id;

增、删、改

1.代码如下

<?php

$conn=mysql_connect("localhost","root","111111");

if(!$conn){

} die("出错了".mysql_error()); mysql_select_db("php",$conn) or die(mysql_error()); mysql_query("set names utf8");

/* 添加

$sql="insert into user (name, password,email,age)

values('小刚',md5('234'),'xiaoming@qq.com', 32)";

*/

/*删除

$sql="delete from user where id=2";

*/

/*更新*/

$sql="update user set name='小美' where id=3";

//如果是dml操作,返回值为bool值

$res=mysql_query($sql,$conn); //接受传送过去的返回值 if(!$res){//判断结果die( "操作失败".mysql_error());

}

//看看有几条数据

if(mysql_affected_rows($conn)>0){

echo "操作成功";

}else{

?>

} echo "没有受影响的行数"; mysql_close($conn);

篇二:ODI经典案例分析二

ODI经典案例分析(二)

经典案例 五

关于接口卡在update existing rows

案列介绍:

update existing rows

,无法继续执行下去,也无报错。(如图1)

图1

案例分析:

加上过滤条件,减少执行数据

创建物化视图之后,作了相应的增量集成。发现数据库中存在对视图进行创建增量集成失败时所存留的触发器,把这些触发器删除之后,删除数据库中的临时表,重新执行接口,发现接口可以正常执行。

案例总结:

当遇到没有见过的问题时,一定要把所有可能的情况,全部试验一遍之后,找出可以彻底解决问题的方法。当接口卡在关于接口卡在update existing rows这一步时,第一想法就应该是处理数据量过大,但是过滤数据之后发现不到较为明显的效果。就应该向数据库中寻找问题,尤其是做了加入CDC失败之后,记得在数据库中删除启动日志失败,但是已经创建的触发器。尤其注意临时表,可能创建并不成功,及时到数据库中删除临时表,还有要注意的同义词的使用。

经典案例 六

ODI连接mysql的非root用户时需注意事项

案列介绍:

ODI连接不同的数据库时不但要注意相关的JDBC驱动程序,重点要注意的是JDBC URL的连接方式,对于ODI连接mysql时的相关注意事项,我们通过东大的现场所遇到的问题,进行分析,来探讨mysql时所使用的非root用户。

案例分析:

ODI连接mysql时,我们通常是使用rootmysql用户有没有相应的权限,与相关的限制。

ODI连接mysql东大现场的连接方式是:

ncoding=utf-8

注意最后一段ODI

案例总结:

在用MYSQL但是建议大家尽量使用mysql的root用户连接ODI ODI连接形式

IPIP。实IP地址就是真实的IP地址,在做双机时,一个IP对应一个实例名,IP地址与实例名两个部分,而若引入虚IP地址,

虚拟IP地址是一个不与特定计算机或在一个计算机中的网络接口卡(NIC)相连的IPVIP地址,但是所有的分组旅行通过实际的网络接口。VIPs大部分用于连接冗余;一个VIP地址可能也在一台计算机或NIC发生故障时可用,因为一个可选计算机或NIC响应连接。一个虚拟IP地址的例子是一个Loopback(无电路IP地址)作为不与在主机或路由器中任何一个特定接口(或电路)相关的IP地址。

案例分析:

南医大所使用的IP即为虚IP地址。南医大所出现的问题,所有的连接方式以urpdb1或ywk1为实例名的物理数据库,全无法正常连接(如图2),而若把实例名改成urpdb2或ywk2时,测试可以正常连通(如图3)。我们怀疑是数据库一被停掉或者出现其它问题,在这里我们所需注意的是,为何直接修改实例名即可成功连接?就是因我们所使用的是虚IP的效果。

2

图3

IPODI接口的正常执行。

KM

案列介绍:

在江苏大学的接口制作过程中,所使用的两种知识模块IKM SQL Incremental Update与IKM SQL Incremental Update Lob进行分析测试,发现接口全都可以正常执行,不会报错。

案例分析:

我们通过对两种知识模块的详细信息的分析IKM SQL Incremental Update(如图4)IKM SQL Incremental Update Lob(如图5)

4

篇三:php经典面试题及答案非常实用

最常见的php面试题

目录

面试题一 .......................................................................................................................................... 1

面试题二 .......................................................................................................................................... 3

面试题三 .......................................................................................................................................... 4

面试题四 .......................................................................................................................................... 6

面试题五 .......................................................................................................................................... 7

面试题六 .......................................................................................................................................... 8

面试题七 .......................................................................................................................................... 9

本面试题分为七套,这些大部分都是本人被面试过的总结,发出来给大家参考,希望能助你在面试中顺利过关!

面试题一

1、表单提交get和post有何区别?

答:get的方式是把数据在地址栏中发送,get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。

2、用PHP打印出前一天的时间格式是2006-5-10 22:21:21

echo date("Y-m-d H:i:s",time()-(3600*24));或echo date("Y-m-d H:i:s",strtotime("-1 day"));

3、php中include和require的区别?

这两种结构除了在如何处理失败之外完全一样。include() 产生一个警告而 require() 则导致一个致命错误。换句话说,如果你想在遇到丢失文件时停止处理页面就用 require()。include() 就不是这样,脚本会继续运行。

4、echo(),print(),print_r()的区别

echo可以接多个参数,print只能接一个参数,它们都是PHP的语言结构,print_r是递规打印,用来打印数组或对象

5、能够使HTML和PHP分离开使用的模板

smarty,phplib,SmartTemplate 6你如何理解MVC模式?

首先说一下框架,框架:就是别人把一些底层,常用操作.比如数据操作(增,删,改,查)写好.你来直接用.其它的功能要自己来做。

MVC:设计模式,M模型,V显示,C控制.现在许多框架都是基于MVC来做的把逻辑和显示分开.比如你要换页面,只需要改V里面的东西并不需要再去变动程序(详细的东西可以上网上!

查一下)

7、如何实现PHP、JSP交互?

PHP提供了支持JAVA的类库文件,或者通过HTTP协议来交互数据

8、使用哪些工具进行版本控制?

VSS,CVS,SVN

9、如何实现字符串翻转?

不考虑中英文混合,不是最优算法,不用php库函数翻转字符串:

functionstr_to_reverse($str){

for($length=0;$str[$length]!=null;$length++){;}

$strlength=$length-1;

unset($length);

for($start=0,$end=$strlength;$start<$end;$start++,$end--){

$temp=$str[$start];

$str[$start]=$str[$end];

$str[$end]=$temp;

}

unset($temp,$start,$end,$strlength);

return$str;

}

10、优化MYSQL数据库的方法。

1) 将where中用的比较频繁的字段建立索引,联合索引。

2) 保证单表数据不超过200W,适时分割表。

3) 避免使用长连接。

4) 修改my.cnf里面的各项参数,比如最大连接数,查询缓存等。根据你的服务器内存来最大化调节那些配置参数。

5) 针对需求,使用正确的表引擎,是myisam或是innodb。

11.用PHP写出显示客户端IP与服务器IP的代码:

echo $_SERVER['REMOTE_ADDR'] //客户端ip

echo $_SERVER['SERVER_ADDR'] //服务器端ip

12、apache+mysql+php实现最大负载的方法

1) 问的太笼统,生成静态html页面,squid反向代理,apache,mysql的负载均衡。

2) 可以采取数据缓存的方法,我们通常在统计数据的时候,需要在原始数据的基础上经过计算等一系列操作,才会得到最终的结果,如果每做一个查询都需要这样一系列操作,当数据量大时,势必会带来很多问题。可以建立一个结果表,写一个脚本,用crontab定时触发

脚本去原始表取数据,计算,写入到结果表,前端查询从结果表取数据,这也是比较常用的一种做法。

3) 采用分布式,多个apache,多个mysql,其实就是dns负载均衡,dns根据当前用户解析几个ip的ping值,将用户转移到某一台最快的服务器,或者平均分配。

4 )money不是问题的话,可以考虑F5硬件负载均衡!

5)可以使用Microsoft Windows Server系统的负载均衡设置

面试题二

1、PHP/MySQL编程

1) 某内容管理系统中,表message有如下字段

id 文章id

title 文章标题

content 文章内容

category_id 文章分类id

hits 点击量

创建上表,写出MySQL语句

2)同样上述内容管理系统:表comment记录用户回复内容,字段如下

comment_id 回复id

id 文章id,关联message表中的id

comment_content 回复内容

现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面

文章id 文章标题 点击量 回复数量

用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0

3) 上述内容管理系统,表category保存分类信息,字段如下

category_id int(4) not null auto_increment;

categroy_name varchar(40) not null;

用户输入文章时,通过选择下拉菜单选定文章分类

写出如何实现这个下拉菜单

2、PHP文件操作

1)

上述内容管理系统:用户提交内容后,系统生成静态HTML页面;写出实现的基本思路 ob_start();

3、实现中文字串截取无乱码的方法。

这个首先要考虑字符集的问题,UTF-8下一个汉字占3字节,GBK下一个汉字占2字节.可以自己写个函数来处理,别人也写了很多,当然也可以开启mbstring扩展库,使用里面的mb_substr()等函数来截取。当截取字符出现乱码时,是因为汉字被截断了,可以再字符串尾部连上一个chr(0)

var $empty = '';

var $null = NULL;

var $bool = FALSE;

var $notSet;

var $array = array();

面试题三

1.

$a = "hello";

$b = &$a;

unset($b);

$b = "world";

what is $a?

hello,unset($b)只是释放了$b自己和$a的别名关系,并不会释放$a

2.

$a = 1;

$x = &$a;

$b = $a++;

what is $b?

1,先执行$b = $a,$a++再进行,所以$b还是1

3.

$x = empty($array);

what is $x?true or false

true,$array是空数组

4.您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?

CVS:winCVS,是一个CVS的客户端

VSS,微软的产品,比较适合中小型项目,只支持单人checkout

5.您是否用过模板引擎? 如果有您用的模板引擎的名字是?

SMARTY,php官方推荐的模板引擎,它是编译型模板,与phplib不太相同,功能强大,30多种标签,支持cache

6.请简单阐述您最得意的开发之作.

hdwiki,开源项目,mediawiki的使用性国人很不适应,代码修改起来也比较困难.hdwiki比较适合目前的国人使用.

7.对于大流量的网站,您采用什么样的方法来解决访问量问题?

1 squid反向代理

8、谈谈事务处理

可以控制并发操作所产生的数据同步提交、更新所带来的冲突问题.可以进行comit,rollback操作,数据的安全性得到了提高。

2) 简单描述用户修改以发布内容的实现流程和基本思路

9、PHP程序

1) 写出以下程序的输出结果

<?

$b=201;

$c=40;

$a=$b>$c?4:5;

echo $a;