js :客户端脚本;
php:服务器端脚本;
*不能鼠标右键,直接使用浏览器打开;
应该运行在服务器上(Apache)
可嵌入 到 html页面;
允许编写html代码;
允许编写php代码;
扩展名为.php;
PHP VS HTML
PHP :动态页面,
动态资源:根据用户操作,动态变化;
HTML:静态页面,
静态资源:html / css / js;
创建php文件:
1.扩展名为.php;
2.以"<?php"开始;以"?>"结束;
3.使用echo输出;
关键字:
echo :输出(浏览器中)一个或多个字符串;
echo("字符串") :使用方式类似于函数调用;
php语法:
常量与变量
常量 :一旦定义,值不能改变;否则报错;
const 常量名=常量值;
define(常量名,常量值);
变量:
$变量名=变量值;
数据类型:
四种标量类型:
- boolean
true echo输出为 1 使用var_dump()输出为 bool(true);
false echo输出为 ""空字符 使用var_dump()输出为 bool(false);
- integer 整型;
- float / double 浮点型;
- string
单引 \'\':定义固定字符串;
性能比较高;
使用var_dump()输出为 string(字符个数) 字符串;
双引 "":如果有变量名,可以识别并输出;
性能相对低;
** var_dump()输出变量的类型和值;
两种复合类型:
- array
定义数组:
1.类似于js,直接量方式:如
$arr=[1,2,3,4,5];
2.索引数组:如
$arr=array(
0 => 1,
1 => 2,
2 => 3
索引值 => 元素内容
)
3.关联数组:如
$arr=array(
"first" => 1,
"two" => 2,
"three" => 3
key(健) => 元素内容
)
- object
1.使用new关键字实例化一个类;
class foo
{
function do_foo()
{
echo "Doing foo.";
}
}
$bar = new foo;
$bar->do_foo();
两种特殊类型:
- resource :资源
作用:保存外部资源的一个引用;
使用场景:
在文件上传中,保存上传文件;
- NULL
运算符:
基本与js一致;
字符串连接不再是:"+",而是点".";
循环结构:
while
do while
for
foreach
foreach(数组 as key => value){}
选则结构:
if...else...
switch...case...
php预定义变量:
- $_GET 接收客户端以请求类型为GET方法发送的数据内容
- $_POST 接收客户端以请求类型为POST方法发送的数据内容
- $_REQUEST $_GET、$_POST等
- $_FILES 专门用于文件上传;
- $_COOKIE 接受客户端保存的Cookie数据;
php预定义函数
数据库扩展;
php连接mysql数据库;
准备工作:
1.xamPP的目录中->php->ext 必须要有文件:
php_mysql.dll
php_mysqli.dll
2.xamPP的目录中-php: php.ini的文件里必须要有代码:
extension=php_mysql.dll
extension=php_mysqli.dll
连接mysql数据库:
- 过程化风格
1. 创建与MySQL数据库的连接
* PHP有关MySQL数据库的扩展(预定义函数)
* * mysql - 原生MySQL API
* * mysqli - MySQL增强版扩展
* mysqli_connect(host,username,passwd,dbname,port)
* * host - MySQL数据库所在服务器的IP地址
* * username - 登录MySQL数据库的用户名
* * passwd - 登录MySQL数据库的密码
* * dbname - 指定登录的数据库名称
* * port - MySQL数据库的端口号
*
* * 该方法的返回值 - 数据库连接对象
如:$conn = mysqli_connect(\'127.0.0.1\',\'root\',\'\',\'day1117\',\'3306\');
2. 定义SQL语句 - 字符串类型
如果数据库语句中涉及字符串类型,要加引号’’;
如:$sql = "INSERT INTO myuser VALUES(NULL,\'miejueshitai\',\'12345\',86,\'miejue@qq.com\',\'emeishan\')";
3. 发送SQL语句到MySQL数据库
* mysqli_query(link,query)
* * link - 表示MySQL数据库的连接对象
* * query - 表示发送的SQL语句
*
* * 该方法的返回值
* * 如果执行成功
* * INSERT|UPDATE|DELETE - true
* * SELECT - mysqli_result对象
* * 如果执行失败 - false
如:$bool = mysqli_query($conn,$sql);
//var_dump($bool);
4. 如果上述操作 - 查询(SELECT)语句
* * 通过mysqli_query()方法,返回mysqli_result结果集对象
* * 解析mysqli_result结果集对象;
5. 关闭与MySQL数据库的连接
* mysqli_close(连接对象)
*/
如:mysqli_close($conn);
- 面向对象风格:
1.创建MYSQL或MYSQLi对象
$mysqli=new mysqli(host,username,passwd,dbname,port)
相当于与MYSQL建立连接
2.定义sql语句
$sql="INSERT INTO myorder VALUES(NULL,\'zhangsanfeng\',\'86\',\'wudanshang\',\'2015-11-18\')";
3.调用mysqli对象的query()方法;
$mysqli->query($sql)
//该方法返回执行结果:
$result=$mysqli->query($sql);
4. 如果上述操作 - 查询(SELECT)语句
* * 解析mysqli_result结果集对象
5.调用mysqli对象的close()方法
$mysqli->close();
中文乱码问题:
* 执行mysqli_query($conn,\'SET NAMES UTF8\');
* 执行$mysqli->query(\'SET NAMES UTF8\');
加在执行SQL语句之前;
结果集对象:
mysqli_query()方法执行的SELECT语句
* * 该方法的返回值为mysqli_result对象
* * 属性
* * num_rows - 得到记录条数
* * field_count - 得到字段数量
$result = mysqli_query($conn,$sql);
属性:
num_rows:记录数据条数;
field_count:字段数量;
方法:
* mysqli_fetch_array(结果集对象)
* 返回数组
* mysqli_fetch_object(结果集对象)
* 返回object
*$row=mysqli_fetch_assoc($result)
返回一个关联数组;
*【 案例】
- 开发完整的Web应用(客户端|服务器端|数据库)
* 用户登录功能 在服务器打开 :8081/php/demo/login.html
* 用户注册功能
* 先查询用户名是否存在
SELECT * FROM 表名 WHERE name=用户名
* $result->num_rows - 0(不存在)
* $result->num_rows - 不为0(存在)
* 再插入数据内容