PHP热身
0.环境说明
win10 xampp phpstorm
xampp带了apache和mysql以及phpmyadmin
1.配置mysql:修改默认编码
关mysql
xampp/mysql/bin/my.ini
在[mysqld]后添加character-set-server=utf8
在[mysql]后添加default-character-set=utf8
重启mysql
1.1配置php.ini,改时区为上海:
date.timezone=Asia/Shanghai
1.2配置php.ini,修改错误级别:
error_reporting=E_ALL
2.建表
给个例子:
use common_module;
create table if not exists contacts(
user_id int auto_increment primary key,
email varchar(60) comment '邮箱',
name varchar(60) comment '姓名',
sex tinyint(1) comment '性别 1男 2女',
address varchar(60) comment '地址',
phone varchar(20) comment '手机号'
)CHARSET=utf8;
到phpmyadmin里面导入即可
3.开phpstorm,建项目
4.PDO
php里面用mysql,现在应该使用PDO了。时代是在前进的。不要畏葸不前。
xampp里已经自带配置好了pdo,写代码的时候注意mysql不要拼错否则报错说没有pdo的驱动。
prepare statement的一些要注意的地方
别用bindParam和bindValue参数。都找不到了,而且有bug。用数组吧。
例子1:select语句,选出某些符合条件的结果。条件使用?来处理,条件的具体值使用数组告知:
# 建立数据库连结,创建PDO对象
$dsn = "mysql:host=localhost;dbname=common_module";
$user = "root";
$pass = "";
$pdo = new PDO($dsn, $user, $pass);
# 编写SQL语句,进行查询
$sql = "select * from contacts where user_id>?";
$stmt = $pdo->prepare($sql);
$id_threshold = 4;
$stmt->execute(array($id_threshold));
$result = $stmt->fetchAll();
# 若同一SQL语句有不同的查询值取值,那么可以再次使用这个stmt
# 输出查询结果
print_r("<pre>");
print_r($result);
print_r("<pre>");
相应地,执行insert操作的例子如下:
# 建立数据库连连接,创建PDO对象
$dsn = "mysql:host=localhost;dbname=common_module";
$user = "root";
$pass = "";
$pdo = new PDO($dsn, $user, $pass);
# 编写SQL语句,进行查询
$sql = "insert into contacts (email, name, sex, address, phone) values (?, ?, ?, ?, ?)";
$stmt = $pdo->prepare($sql);
$email = "ss@ss.com";
$name = "keeper";
$sex = 1;
$address = "北京市西城区AB街33号";
$phone="18812345678";
$status = $stmt->execute(array($email, $name, $sex, $address, $phone));
# 处理查询结果
if($status){ #sql执行成功,则获取其执行结果并进一步处理
$result = $stmt->fetchAll();
# 输出查询结果
print_r("<pre>");
print_r($result);
print_r("<pre>");
}else{
echo "执行出错!";
}
显然,上面的select和insert操作都使用了prepare statement的方式,既保证高性能,又保证安全防注入。
5.使用smarty模版
smarty不是唯一的选择,但是是容易上手的选择。很多cms系统都使用了和smarty很相似的语法。
使用smarty3,而不是过时的smarty2.直接把demo目录下所有文件和文件夹和复制到你的项目中,并把libs目录复制到apache根目录。
稍微正规一点的话,应该考虑入口文件,对url进行解析后进行请求分发,分配到不同的业务逻辑代码上。。。但是为了简单起见,这里就先不使用分发页面了。。(需要参考thinkphp等框架看看人家是怎么配置的)
\(smarty=new Smarty;
\)smarty->assign('var_name', 'var_value');
$smarty->display('target_template_page.tpl');
6.使用bootstrap
都什么年代了,前端虽然自己不会写,但起码要知道bootstrap的存在要用它。用bootstrap3.
7.一个只有增删改查模块的简陋应用
终于进入正题了,一个只具有增删改查功能的简陋应用:增加联系人,删除联系人,修改联系人,查看联系人。
是根据《Web开发的平民英雄:php+mysql》上的例子修改而来。原书中使用最简陋的代码编写而成。本代码改进如下:
使用smarty模版;使用PDO操作数据库;使用bootstrap美化界面;精简数据表。
下载链接
http://pan.baidu.com/s/1mhLwj1Y
PHP热身的更多相关文章
- php热身2:CRUD with Ajax
这次热身是一个会员管理系统,包括会员注册.登录.资料修改功能,使用ajax技术 1.建表 use common_module; create table if not exists member( u ...
- Android热身:通过网络获取资源并更新UI组件
Android热身:通过网络获取资源并更新UI组件 目标 点击"发送请求"按钮,下载某网页的html源码,并显示在TextView控件上:点击"清空",清除Te ...
- [转]Entity Framework技术导游系列开篇与热身
学习Entity Framework技术期间查阅的优秀文章,出于以后方便查阅的缘故,转载至Blog,可查阅原文:http://blog.csdn.net/bitfan/article/details/ ...
- 【转】Entity Framework技术导游系列开篇与热身
转自:http://blog.csdn.net/bitfan/article/details/12779517 Entity Framework走马观花 之 把握全局 ================ ...
- Entity Framework技术导游系列开篇与热身
在微软平台写程序有年头了,随着微软数据存取技术的持续演化,我在程序中先后使用过ODBC.DAO.ADO.ADO.NET.LINQ to SQL. Entity Framework这些技术. 近几年来, ...
- JS0热身运动
热身热身小知识点: JS中如何获取元素: 1 通过ID名称来获取:document get element by id -->document.getElementById() 2 .... ...
- Android查缺补漏(IPC篇)-- 进程间通讯基础知识热身
本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8479282.html 在Android中进程间通信是比较难的一部分,同时又非常 ...
- Redis自学笔记:3.1入门-热身
第3章:入门 3.1热身 获取符合规则的键名列表:keys 匹配key 表3-1 glob风格通配符规则 符号 含义 ? 匹配一个字符 * 匹配任意个(包括0个)字符 [ ] 匹配括号间的任一字符,可 ...
- C#语言————第二章 C#语言快速热身
第二章 C#语言快速热身 ***********一.选择结构**************** 1:if选择结构与java的if选择结构语法完全相同 2:switch选择结构 ①:常量表达式的值可 ...
- Android逆向进阶——让你自由自在脱壳的热身运动(dex篇)
本文作者:HAI_ 0×00 前言 来看看我们今天的主题. 让你自由自在脱壳的热身运动. 现在很多第厂家都是使用第三方的加固方式来进行加固的.或者使用自己的加固方式进行加固. 那么我们必不可少的就是脱 ...
随机推荐
- mvc webapi 返回字符串自动加双引号
来自:http://www.cnblogs.com/David-Huang/p/4351023.html 返回字符串,突然碰到双引号号问题,幸亏有人解决了. 返回XMLDocument类型,默认会解析 ...
- Java多线程总结(一)多线程基础
多线程是Java学习的非常重要的方面,是每个Java程序员必须掌握的基本技能.本文只是多线程细节.本质的总结,并无代码例子入门,不适合初学者理解.初学者学习多线程,建议一边看书.看博文,以便写代码尝试 ...
- [MCSM]随机搜索和EM算法
1. 概述 本节将介绍两类问题的不同解决方案.其一是通过随机的搜索算法对某一函数的取值进行比较,求取最大/最小值的过程:其二则和积分类似,是使得某一函数被最优化,这一部分内容的代表算法是EM算法.(书 ...
- Android Studio单元测试入门
Android Studio单元测试入门 通常在开发Android app的时候经常会写一些小函数并验证它是否运行正确,通常做法我们是把这个函数放到某个界面(Activity上)执行一下,运行整个工程 ...
- 再记一次w3wp占用CPU过高的解决过程(Dictionary和线程安全)
在此之前项目有发生过两次类似的状况,都得以解决,但最近又会发现偶尔CPU会跑满,虽然之前使用过WinDbg解决过两次问题但人的记忆是不可靠的,今天处理同样问题的时候还是遇到了一些障碍,这一次希望可以记 ...
- 乱码电路(Garbled circuits)
乱码电路(Garbled circuits)是Andrew Yao教授在上世纪80年代发明的一种很聪明的技术.它可以让两个人针对某个算式来计算答案,而不需要知道他们在计算式所输入的数字. 举个例子说, ...
- Ubuntu backlight
我们可以通过键盘来调节亮度,但是那样亮度无法微调,每次变亮变得太多. 在 /sys/class/backlight/nv_backlight 这个目录下,brightness 是最主要的.backli ...
- 74 partprobe-磁盘管理
partprobe命令用于重读分区表,当出现删除文件后,出现仍然占用空间.可以partprobe在不重启的情况下重读分区. 语法 partprobe (选项) (参数) 选项 -d:不更新内核: -s ...
- python基础-range用法_python2.x和3.x的区别
#range帮助创建连续的数字,通过设置步长来指定不连续 python2.7 #直接就在内存中创建出来(0-99) >>> range(100)[0, 1, 2, 3, 4, 5, ...
- python环境搭建-Linux系统下python2.6.6升级python3.5.2步骤
[root@template ~]# python -v # /usr/lib64/python2.6/encodings/utf_8.pyc matches /usr/lib64/python2.6 ...