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 前言 来看看我们今天的主题. 让你自由自在脱壳的热身运动. 现在很多第厂家都是使用第三方的加固方式来进行加固的.或者使用自己的加固方式进行加固. 那么我们必不可少的就是脱 ...
随机推荐
- ES6 .Set数据结构去除重复元素
用法一 var set = new Set([1, 2, 3, 4, 2, 8, 4]); //两个2 for (var elem of set) { console.log(elem) // 输出结 ...
- SQL Server数据库代码指令简介
这些是比较常用的命令操作,事先声明,这些命令是不区分大小写的,我按照我的课本来总结用法和知识点,无用的章节自动省略. 没有一点数据库知识基础的可以等我录制视频,不然可能看不懂,视频链接:http:// ...
- 杭电1008 Elevator
#include <stdio.h> #include <stdlib.h> int main() { int n; int i,j; int num[101]; while( ...
- python数字图像处理(15):霍夫线变换
在图片处理中,霍夫变换主要是用来检测图片中的几何形状,包括直线.圆.椭圆等. 在skimage中,霍夫变换是放在tranform模块内,本篇主要讲解霍夫线变换. 对于平面中的一条直线,在笛卡尔坐标系中 ...
- .net 动态代理的泛型方法支持问题
最近一直在做.net平台下的高速服务框架.其中有一个问题一直困扰着我:通过动态代理RealProxy创建的服务代理,不支持泛型方法调用.比如: 接口声明: public interface IMete ...
- C/C++实践笔记_001Helloworld
1.void返回值为空,int返回值Linux c,c++中,Main函数可以返回也可以不返回,普通函数必须返回.C编译松散,很容易结果出错,C++编译严格一些,结果一般会正确C语言不返回不会报错,但 ...
- centos hadoop搭建准备
永久修改主机名:hostnamectl set-hostname <hostname> IP地址: BOOTPROTO=static IPADDR=192.168.31.128NETMAS ...
- HttpClient4.5 SSL访问工具类
要从网上找一个HttpClient SSL访问工具类太难了,原因是HttpClient版本太多了,稍有差别就不能用,最后笔者干脆自己封装了一个访问HTTPS并绕过证书工具类. 主要是基于新版本Http ...
- NPOI2.0学习(一)
引用空间 using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; 创建工作簿(workbook)和sheet HSSFWorkbook wk = new ...
- Js中Prototype、__proto__、Constructor、Object、Function关系介绍
一. Prototype.__proto__与Object.Function关系介绍 Function.Object:都是Js自带的函数对象.prototype,每一个函数对象都有一个显式的proto ...