输出
js中的输出方法有:
alert
console.log
document.write
php中的输出方法有:
- 输出字符串
<?php
echo "字符串" ;
?>
- 字符串与非字符串
var_dump("hello")//详细
print_r()//简洁
- 保留格式
echo "<pre>";
print_r($arr)
echo "</pre>";
变量
变量是存储数据的容器,以$开头,区分大小。 区别于数据库,变量是在内存中临时存储数据,而数据库一般是存储持久数据的。
$a=10;
var_dump($a);
$arr = ['a','b','c'];
值传递和按地址传递
$a=10;
$b=$a; //值传递
$c=&$a; //按地址传递
销毁
unset($b);
上面的代码会销毁b,但是不会销毁空间,空间交给垃圾回收机制销毁。
变量类型
php是弱类型,包括:
- 4种标量数据类型,布尔,字符串,整型(2,8,16进制整型),浮点
- 2种复合数据类型:数组,对象
- 2特殊数据类型:资源(外部资源引用,如数据库连接、文件句柄),空值
字符串
字符串中单引号不会解析,双引号会解析代码
$a=10
echo '$a'; //"$a"
echo "$a"; //"10"
数组
- 索引数组 使用整数下标来取值
$arr[0]=10;
- 关联数组 使用字符串来取值
$arr["age"]=10;
命名函数
function sumNum($num1,$num2){
echo "hello";
return $num1+$num2;
}
echo sumNum(10,20);
使用指针传参
$b=10;
function sun(&$a){ //引用,或按地址传值
$a++;
}
sun($b);
作用域
- 全局变量,可在函数外面访问
$a=10;
echo $a; //10
function(){
echo $a; //error
}
- 局部变量,可在函数里面访问
echo $a; //error
function(){
$a=10;
echo $a; //10
}
- 超全局变量,既可以在函数内访问,又可以在函数外访问
- 常用超全局变量
$_GET
$_POST
$_REQUEST
$_COOKIE
$_FILES
$_SESSION
$_SERVER //服务器信息
引入外部文件
- require,出错会阻塞
- include,出错不会阻塞
- require_once,引入文件包含php函数时,多次引入会带来函数名重复声明的错误,使用require_once可以避免
reqiure './demo1.php';
php表单操作
- 传参
//form传参
<form action="./demo.php" method="post">
<input name="value1" value="123">
</form>
//url传参
<a href="demo.php?value1=123">点击</a>
-
get传参相对于post的缺点:
- 参数在url中,相对不安全
- url长度有限
文件上传
- 文件格式 用form表单的enctype属性指定
<form action="./demo.php" method="post" enctype="multipart/form-data">
<input name="value1" value="123">
</form>
- 在php中使用$_FILES超全局变量来获取上传的文件
var_dump($_FILES);
$img=$FILES["img"];
- 使用move_upload_files将临时文件转存到指定路径中
//无错误
if($img["error"]==0){
move_upload_files($img["tmp_name"],"./{$img["name"]}");//转存临时文件
echo "文件上传成功";
}else{
echo "文件上传失败";
}
- 优化文件名
$img= isset($_FILES["img"])?$_FILES["img"]:'';
//时间戳加上.后面的文件格式名
$fileName=time().rand(10000,99999).strchr($img["name"],'.');
php与数据库的交互
- mysqli_connect建立连接
$link =mysqli_connect(ip,username,password,database,port)//port默认3306
- mysqli_query执行sql语句
$sql='insert into tableName values(a,b,c)';
$res=mysqli_query($link,$sql);
如果是增删改操作,mysqli_query会返回true或false
var_dump($res);//true\false\select_data
-
mysql_error //错误信息
-
mysql_errno //错误码
-
一般在存储密码数据时,不会使用明文,而是先使用hash算法例如sha1()对其进行加密
$upass=sha1($_POST["upass"]);