php中的语句怎么写,php程序员面试题都有哪些?
想了解IT界的那些事儿,请关注萌新程序猿!!!
刚好我之前在自己的个人网站(www.onezero.cc
)中整理过此类的知识,因此特地奉上。首先总结一下,既然是php程序员,下面的知识是最基本的:
你需要了解PHP的各类基础知识,php语法、面向对象、设计模式等等,其次你需要懂得PHP的开发框架的知识,tp、laveral、yii等,再次你需要了解前端的知识,了解数据库(mysql等)的知识,了解php运行的服务器环境nginx、apache等,更进一步你需要了解redis、缓存之类,最后你需要掌握web开发安全的相关知识,比如sql注入、xss等。写接口,很多公司是前后端完全分离。个人面试整理1.PHP的魔术变量都有什么?
__LINE__ 文件中的当前行号。 __FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。 __DIR__ 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。 __FUNCTION__ 常量返回该函数被定义时的名字 __CLASS__ 常量返回该类被定义时的名字(区分大小写)。 __METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。 __NAMESPACE__ 当前命名空间的名称(区分大小写)。此常量是在编译时定义。2.PHP超级全局变量(9个)
$GLOBALS 储存全局作用域中的变量 $_SERVER 获取服务器相关信息 $_REQUEST 获取POST和GET请求的参数 $_POST 获取表单的POST请求参数 $_GET 获取表单的GET请求参数 $_FILES 获取上传文件的的变量 $_ENV 获取服务器端环境变量的数组 $_COOKIE 浏览器cookie的操作 设置cookie:setcookie(name, value, expire, path, domain); 获取cookie:$_COOKIE[“user”]; 删除cookie:setcookie(“user”, “”, time()-3600);//设置过期时间 $_SESSION 服务端session的操作 使用session前一定要session_start()启动session 储存session:$_SESSION[“name”]=”King”;//数组操作 销毁session:unset($_SESSION[“name”]);//销毁一个 session_destroy()和unset($_SESSION);//销毁所有的session3.PHP魔术函数(13个)
__construct() 实例化对象时被调用,当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。 __destruct() 当删除一个对象或对象操作终止时被调用。 __call() 对象调用某个方法,若方法存在,则直接调用;若不存在,则会去调用__call函数。 __get() 读取一个对象的属性时,若属性存在,则直接返回属性值;若不存在,则会调用__get函数。 __set() 设置一个对象的属性时,若属性存在,则直接赋值;若不存在,则会调用__set函数。 __toString() 打印一个对象的时被调用。如echo $obj;或print $obj; __clone() 克隆对象时被调用。如:$t=new Test();$t1=clone $t; __sleep() serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。 __wakeup() unserialize时被调用,做些对象的初始化工作。 __isset() 检测一个对象的属性是否存在时被调用。如:isset($c->name)。 __unset() unset一个对象的属性时被调用。如:unset($c->name)。 __set_state() 调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。 __autoload() 实例化一个对象时,如果对应的类不存在,则该方法被调用。4.前端后端的常用开发框架都有哪些?
前端:(1) CSS: Bootstrap、EasyUI
(2)JavaScript:VUE.js、angular.Js、jQuery.js。
后端:thinkPHP、Yii、Laravel、swoole、workerman(当时只想到这几个)、。
5.如何查看防火墙开放的端口号service iptables status
6.查看防火墙特定的端口号,例如80端口的状态?netstat -an | grep 80 查看80端口被什么占用netstat -tunlp | grep 80lsof -i:80
7.Linux系统中System进程占用大量CPU,可能的原因?(1) 进入了一个死循环无法跳出来;(2) 也许是一直在等待一个信号,如从dbus上读取一个用户需要的信息; #dbus是一个为应用程序间通信的消息总线系统, 用于进程之间的通信。(3) 有可能是程序在对一个非常大的内容进行分析和处理;(4) 有可能是程序要处理的问题比较多,所以在一个个慢慢的执行。
8.说一下HTTP2.0与HTTP1.0的根本区别。
9.InnoDB和MyISAM的区别是什么,二者分别应用与什么方面?
10.用尽量多的方法说明如何提高一个网页的访问速度。
11.请设计一个通信协议,实现与摄像头之间的通信,要注意协议的安全性和可扩展性。
12.如果一个公司有几十个系统,每一个系统都需要登录,现在请你设计一个系统,可以实现每一个系统的单点登录。
其他整理1、用PHP打印出前一天的时间格式是2017-9-5 15:30:21
echo date(‘Y-m-d H:i:s’, strtotime(‘-1 day’));
2、echo(),print(),print_r()的区别
echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)
print只能打印出简单类型变量的值(如int,string)
print_r可以打印出复杂类型变量的值(如数组,对象)
echo — 输出一个或者多个字符串
3、能够使HTML和PHP分离开使用的模板
smarty,Heyes Template Class等
5、使用哪些工具进行版本控制?
VS Server on Apache作服务端,WinCVS作客户端;Subversion on Apache/DAV 做服务端,TortoiseSVN做客户端,或者Subclipse做客户端.
6、如何实现字符串翻转?
strrev()
7、优化MYSQL数据库的方法。
(1).选取最适用的字段属性,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。
(2).使用连接(JOIN)来代替子查询(Sub-Queries)
(3).使用联合(UNION)来代替手动创建的临时表
(4).尽量少使用 LIKE 关键字和通配符
(5).使用事务和外键
8、PHP的意思
Hypertext Preprocessor
9、MYSQL取得当前时间的函数是?,格式化日期的函数是
now(), DATE_FORMAT(date,format)
10、实现中文字串截取无乱码的方法。
mb_substr()
11、您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?
TortoiseSVN-1.2.6 svn-1.2.3
12、您是否用过模板引擎? 如果有您用的模板引擎的名字是?
smarty
13、请简单阐述您最得意的开发之作
14、对于大流量的网站,您采用什么样的方法来解决访问量问题?
首先,确认服务器硬件是否足够支持当前的流量
其次,优化数据库访问。
第三,禁止外部的盗链。
第四,控制大文件的下载。
第五,使用不同主机分流主要流量
第六,使用流量分析统计软件。
—————————————————————–
15、用PHP写出显示客户端IP与服务器IP的代码
16、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们?
require()和include()除了怎样处理失败之外在各
方面都完全一样。include()产生一个警告而require()则导致一个致命错误。
换句话说,如果你想在丢失文件时停止处理页面,用require()。include() 就不是这样,脚本会继续运行。
require()无论如何都会包含文件,而include()可以有选择地包含.
代替用
include_once
require_once
17、如何修改SESSION的生存时间.
18、有一个网页地址, 比如PHP开发资源网主页: ,如何得到它的内容?
19、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?);
未授权(Unauthorized)
php操作数据库的三步骤?
第一步:链接数据库
MYSQLi_connect('主机地址','mysql用户名','mysql密码 ','数据库','端口号')
返回:如果连接成功,返回资源类型的标志符号;如果连接失败,返回false。
如果我们与mysql建立的连接不只一条,那么以后操作数据库的各种函数都必须传入返回的连接符号;
如果我们与mysql建立的连接只有一条,那么以后操作数据库的各种函数就不必传入这个标识符号。建议都传入。
密码为空可以省略密码
$conn= mysqli_connect("localhost", "root", "123456", "dbname");
第二步:检测数据库连接是否成功
mysqli_connect_errno()与 mysqli_connect_error()
mysqli_connect_errno(); 返回上次连接数据库错误的错误号,连接成功返回0
mysqli_connect_error(); 返回上次连接数据库的错误信息
if(mysqli_connect_errno($conn)){
die("数据库连接失败!失败信息:".mysqli_connect_error($conn));
}
前面两步合并的写法:连接数据库同时判断
$conn = mysqli_connect("localhost", "root", "", "mydb") or die("数据库连接失败!失败信息:".mysqli_connect_error($conn));
第三步:选择数据库
mysqli_select_db($link,$dbname)
参数:①标识符 ②连接数据库名称
连接成功,返回true;连接失败,返回false
如果修改数据库成功,则资源标识符中的数据库就会发生变动;
如果修改失败而没有通过代码终止操作,则后续代码可以使用原数据库继续执行
mysqli_select_db($conn, "mydb") or die("数据库选择失败!");
第四步:设置字符集编码格式
mysqli_set_charset($link,$charset) 只能设置为utf8而不能是utf-8
mysqli_set_charset($conn,"utf8") or die("数据库编码集设置失败!");
第五步:编写sql语句
$sql = "select * from 表名";
第六步:执行sql语句
mysqli_query($link,$sql)
如果是(DML)增、删、改,将返回布尔类型是否成功
返回上一次操作时受影响的行数 mysqli_affected_rows($link)
如果是(DQL)查询,将返回资源结果集
返回资源结果集中的行数 mysql_num_rows($result)
返回资源结果集中的字段数 mysql_num_fields($result)
如果查询失败,返回false
$res = mysqli_query($conn,$sql);
mysqli_insert_id($conn); 执行插入语句是返回上次插入最新插入的主键ID
第七步:解析结果集
var_dump(mysqli_fetch_array($res)); 处理结果集,返回关联数组和索引数组 不常用
参数① 需要处理的结果集
参数② 返回哪种数组格式
MYSQL_ASSOC 关联数组
MYSQL_NUM 数字数组
MYSQL_BOTH 默认。同时产生关联和数字数组
echo "<table border='1' style='border-collapse:collapse;text-align:center;width:200px;'>";
echo "<thead bgcolor='lightblue' style='color:#ffffff;'><td>ID</td><td>姓名</td><td>年龄</td><td>性别</td></thead>";
while($row =mysqli_fetch_assoc($res)){ // 返回关联数组 指针遍历 常用
echo "<tr>";
foreach($row as $value){
echo "<td>{$value}</td>";
};
echo "</tr>";
}
echo "</table>";
mysqli_data_seek($res,0); 设置结果集指针位置,此式表达复位至0
var_dump(mysqli_fetch_object($res));
var_dump(mysqli_fetch_row($res)); 返回索引数组
var_dump(mysqli_fetch_object($res)); 返回对象
var_dump(mysqli_fetch_fields($res)); 返回结果集中每一列的字段信息
第八步:关闭资源与结果集
mysqli_free_result()和mysqli_close()
mysqli_free_result($res); //释放查询资源结果集
mysqli_close($conn); //关闭数据库连接
如何用php调用mysql中的数据?
大概的基本流程如下:
连接数据库,再加一个判断。
选择数据库
读取表
输出表中数据
下面是代码:
$con = mysql_connect("localhost","root","abc123");
/* localhost 是服务器 root 是用户名 abc123 是密码*/
if (!$con)
{
die("数据库服务器连接失败");
}
/* 这就是一个逻辑非判断,如果错误就输出括号里的字符串 */
@mysql_select_db("a", $con);
/* 选择mysql服务器里的一个数据库,假设你的数据库名为 a*/
$sql = "SELECT * FROM qq";
/* 定义变量sql, "SELECT * FROM qq" 是SQL指令,表示选取表qq中的数据 */
$result = mysql_query($sql); //执行SQL语句,获得结果集
/*下面就是选择性的输出打印了,由于不清楚你的具体情况给你个表格打印吧*/
//打印表格
echo "
你手机里有哪些堪称神器的App?
不废话,作为一名工具爱好者,推荐7个体积不足10M,很小众,但超好用的手机APP!绝对是神器!不仅帮你节约该死的内存,还能让你体验高质量的APP生活!绝对爆炸!
01 纯纯写作 3.2M这是一个快速的纯文本编辑器,正如它的名字一样,它干了一件非常纯粹的事情,专注于让写作回归最本真的样子。
声称绝不丢失内容的安卓纯文本写作工具。你可以把它当作一个文本编辑器,也可以把它当作是一个灵感记录本,随时随地记录。如果你是文字爱好者,一定要试试这款小众软件,比如我的这篇知乎就是通过它写的!很纯粹,可以很大程度上避免自己跑思想!
02 不做手机控 5.72M这是一款戒手机的app,功能非常全面。这款软件最逗的是,为了教你如何使用它,写了非常详细的说明给你,像教小孩子一样。
你可以把它当作时间管理的神器,不做手机控,真真正正的全面控制你的手机。不做手机控提供了很多模式,比如说番茄模式,统计模式,睡眠模式。我最喜欢的是自定义屏保,和白噪音。总之,这是一款让你专注的软件,没事儿少玩点手机,毕竟对手机不好。
03 VIA浏览器 541KBvia浏览器是一个轻量级的浏览器,只有500多K。从表面上看:这款浏览器外观十分简洁,下载速度超快。简直是秒下秒开。
非常个性化的是,你可以自定义你的浏览器,可以将动态图片设为背景。我太喜欢这个功能了。总之,我喜欢一切属于我自己的东西。从实用角度讲:无广告体验,搜索迅速,支持插件!实在是大赞!如果说一款浏览器,搜索一个关键词,出来满屏的广告,我要它何用?还有一些非常实用的功能,你可以安装一些插件,比如说支持网页截图,翻译网页等,最值得一提的是它的资源嗅探的功能。使用via浏览器后,再看看我的手机自带浏览器 APP 之后,我想打死它。
04 cuto 7.12M作为一名设计师,对图片很敏感,因此选择手机壁纸时也比较注重图片质量,这是一款手机壁纸软件,里面的壁纸不多,但都非常的优质,纯人工挑选的。如果你是壁纸高颜值党,一定要试试这个软件!
每周精选出一张壁纸,非常高清,也可以使用到PPT制作中,可以说,每一张都很吸睛。我挑选了几张,大家可以感受一下:
05 一个木函软件推荐,怎么可能少得了它——一个木函简单实用的工具箱,不足三兆,却包含五六十款小功能,深得我的喜爱。表情包制作,视频提取音频,一秒提取图标,以图搜图,等等,你有没有想过这些功能都蕴藏在一个小小的工具箱里?没错,在这个不足3M的小工具里,蕴含着超大的能量。我简单给大家举些小例子:
QQ强制会话功能
QQ强制会话功能,只需要输入对方的QQ号,直接可以进入会话页面,无论你是否加对方好友,这个非常适用于:小情侣吵架互删好友的时候。至于,效果好不好,就要看你的表现了,技巧已经告诉你了。视频提取音频这个我觉得超级好用,有的时候我会需要剪辑一些视频,但是找音频的时候,找不到合适的音频,此时我会用提取音频的功能来发现一些优质的音频。同样的,当你在刷B站的时候,遇到很好听的BGM却不知道名字的时候,也可以用一个木函来提取。这里给大家举个例子,keep里会对运动记录自动生成视频,我觉得视频里的bgm还不错,想要把它提取出来,通过一个木函轻松就实现了。是不是很赞!他的功能还有超多,大家可以自己研究下哈!以上就是我今天的分享了,希望能对大家有所帮助!别忘了给我点个赞哦!
还可以关注我的头条号@旁门左道PPT,获取更多优质内容!
谁能提供一下PHP动态下拉列表获取数据库数据的代码?
触发,把菜单与表名关联,获取你想要的,比如,鼠标移到A菜单,触发查询A表,显示A表,逐条获取里的字段,然后,将些字段赋给变量,用这个变量去制作你想的php语句,依据你想要的去用,可以把这变量用与二次查询,或是增加相关链接,都可以办到.