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 前言 来看看我们今天的主题. 让你自由自在脱壳的热身运动. 现在很多第厂家都是使用第三方的加固方式来进行加固的.或者使用自己的加固方式进行加固. 那么我们必不可少的就是脱 ...
随机推荐
- zlog学习笔记(zc_hashtable)
zc_hashtable.h /** * hashtable */ #ifndef __zc_hashtable_h #define __zc_hashtable_h typedef struct z ...
- 见鬼了,swiper
1.今天不知怎么swiper的onInit函数不起作用,怎么弄都不行: 把以前能行的案例的包都导进去还是不行,但是onSlideChangeEnd可以触发,晕死了.... 不,它触发了一次onInit ...
- MySQL数据库的优化(下)MySQL数据库的高可用架构方案
MySQL数据库的优化(下)MySQL数据库的高可用架构方案 2011-03-09 08:53 抚琴煮酒 51CTO 字号:T | T 在上一篇MySQL数据库的优化中,我们跟随笔者学习了单机MySQ ...
- DEDECMS之四 栏目调用
一.内容页调用 {dede:type} <a href=" [field:typelink /] "> [field:typename/] </a> {/d ...
- iOS APNS配置(转)
Introduction To send Push notification to an application/device couple you need an unique device tok ...
- TinyFrame升级之四:IOC容器
在这个框架中,我们使用Autofac作为IOC容器,来实现控制反转,依赖注入的目的. 在程序加载的时候,我需要将系统中所有用到的接口与之对应的实现进行装载.由于用户交互部分是在TinyFrame.We ...
- 20160803 - C:\WINDOWS\system32\config\systemprofile\Desktop 不可用的解决
问题:某些软件在从注册表读取用户桌面地址时,欠考虑的%USERPROFILE%的情况,例如迅雷打开文件时,会提示: [Window Title]位置不可用 [Content]C:\WINDOWS\sy ...
- matlab 功率谱分析
matlab 功率谱分析 1.直接法:直接法又称周期图法,它是把随机序列x(n)的N个观测数据视为一能量有限的序列,直接计算x(n)的离散傅立叶变换,得X(k),然后再取其幅值的平方,并除以N,作为序 ...
- matlab 画图中线型及颜色设置
matlab受到控制界广泛接受的一个重要原因是因为它提供了方便的绘图 功能.本章主要介绍2维图形对象的生成函数及图形控制函数的使用方 法,还将 简单地介绍一些图形的修饰与标注函数及操作和控制MATLA ...
- 前端 head 中mate 详解
<meta name="viewport" content="width=device-width,height=device-height,initial-sca ...