php初识

135 阅读1分钟

输出

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的缺点:

    1. 参数在url中,相对不安全
    2. 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"]);