搜索
首页专题php mysql记录学习PHP与mySQL的辛酸史

记录学习PHP与mySQL的辛酸史

Dec 02, 2020 pm 05:20 PM
mysqlphp

php mysql栏目介绍其学习历程,干货满满

记录学习PHP与mySQL的辛酸史

推荐:php mysql

此文记录自己学习PHP和mySQL的过程。之前在网上简单地学习了一下这两门语言,并且自己编写了PHP,可以正常连接mySQL,也可以插入数据。但是自己总觉得还是不太清晰。所以借了本O'REILLY的PHP,MySQL,JavaScript, & CSS。希望能够理清一下编程思路,学得更加通透些,对自己以后编写项目有所帮助。

首先,来了解一下,这几门语言主要负责些什么。PHP是负责主要的在服务器上的工作,MySQL是负责所有的数据,CSS和JavaScript则是管理网页的展现。然而JavaScript也能与PHP进行通信,无论什么时候需要更新一些服务器上的或是页面上的信息。


PHP

PHP是相对松散的语言。也就是它的变量类型不需要在使用前被声明。字符串内的数字可以被自动转换为数字类型。

PHP是用 ‘$' 来定义变量的。比如:$ my_counter = 1;

使用空格(whitespace)让代码变得更加整洁清晰,当自己回头再去查看的时候也比较容易理解。同时也帮助其他的开发人员去维护你的代码。如果需要声明一个数字变量,无论是Int类型还是Float类型都可以直接声明。

例如:$ count = 17;$ count = 17.5;

PHP的变量起名规则

1. 以字母开始或 ‘_’(underscore);

2. 只能包含a-z, A-Z, 0-9 和 ‘_’ (underscore);

3. 不能包含空格,如果一定包含两个单词,一定用 ‘_’ (underscore)来分开;

4. 对大小写是sensitive的,$High_Score与$high_score是不同的变量。

PHP的常量(constants)

1. 声明一个常量不需要用($),一般以字符或下划线开头

2. 只能用define方法来赋值给常量 define ( 'TIREPRICE' , 100 ) ;

3. 在脚本中无法改变该值。

4. 与变量不同,常量贯穿整个脚本是自动全局的。

5. 尽量不要前后都使用(_)来起变量名。

设置常量,使用 define() 函数 - 它使用三个参数:

首个参数定义常量的名称    第二个参数定义常量值    可选的第三个参数规定常量名是否对大小写不敏感。默认是 false。

简短风格 short style : $tireqty 非常方便,但是需要将register_globals配置选项置为on,由于安全性原因,该选项默认为off。

中等风格 Medium style: $_POST[ ' tireqty ' ] 推荐使用

冗长风格 Long style $HTTP_POST_VARS[ ' tireqty' ] 已经被弃用

我们通常建议使用中等风格来声明变量。如果你建立一个简短风格,然后把中等风格赋值给它没有安全问题,反而更容易被使用。$tireqty = $_POST [ 'tireqty' ] ;


PHP的字符串规则

单引号是不会把文字里中以$开头的字符串作为变量的。如果要把它当做变量来看待那就需要用双引号。如果字符串内要使用单引号的话,不能直接使用,这个和JavaScript一样。需要转义字符用“\”来解决单引号问题。此外,\t,\n,\r在双引号里才有效。

PHP还提供了多行数列的操作符“<<<”,优点是输出大段HTML方便,不需要转义,而且可以引用变量。“<<<”之后跟随任意你自己喜欢的名字(自定义分界符),并以此未结束。之间文字打回车不会被显示。里面的变量将可以使用,如果不需要出现变量可以用 “.”来连接。此时就不会被解读为变量了,而是正常输出。

在使用(<<<)时,还需注意的一点是,标识符结束符串(如:END)需要独占一行,前后都不许再有内容包括空格,否则这个PHP文件就相当于废了。


echo和print命令的区别

这两个命令是十分相似的。但是print是一个函数方法需要用到一个参数,然而echoPHP语言的结构。在普通的文字输出上,echo要比print稍微快一点,因为它不是一个函数不需要设置一个返回值。同时,因为echo它不是一个函数,所以不能被用于大量复杂的表达式,但是print却可以。


PHP的函数方法

Function是用来区分出为了实现不同特殊功能的代码。比如这个代码打印三行字,但是如果我要打印十几个的话,就需要不停复制黏贴这些代码,无疑是让代码变得更为复杂和庞大。但是用了function就只需要使用一次函数就可以打印十几次。它是代码变得更简洁并且可读性更高。声明function的方式与JavaScript一样。

比如:

function longdate($timestamp){

return date("l F jS Y",$timestamp);

}


PHP的变量作用域(Variable Scope)

在PHP语言中,你可以决定变量的作用域,比如,只在函数里面使用,或者是全域范围的,任何范围都能被使用。

Local Variables(本地变量)是指变量被建立只被允许在函数中调用。它是零时性的储存,一旦函数完成也就不存在了。

Global Variables(全局变量)有些时候我们也需要全局变量,因为你希望你所有的代码都能调用到它。当需要声明全局变量时,我们需要使用关键字global。不建议使用全局变量,实在没有其他方法时,可以使用。因为一般程序是被打碎成多个小零件,这样数据发生问题也是一些小问题容易被维护。但是如果上千行的代码程序被发现你的全局变量出现了问题。那么将需要花非常大的精力与时间去维护它。同时,建议在为全局变量起名时,最好使用大写字母。

Static Variables(静态变量)当你使用一个变量希望它只能在函数中被调用,但是你也希望它能再下一次使用这个函数时,值不会被恢复到原来的值。这时我们就需要用到静态变量。同时需要注意的是,静态变量不能给予一个计算公式或者函数,必须赋一个实际的值。

比如:

static $int = 0; //Allowed

static $int = 1+2; //Disallowed (will produce a Parse error)

static $int = sqrt(144); //Disallowed

Superglobal Variables(超级全局变量)PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。

这些超全局变量是:

$GLOBALS

$_SERVER

$_REQUEST

$_POST

$_GET

$_FILES

$_ENV

$_COOKIE

$_SESSION

这些超级全局变量名都是使用_下划线和大写字母,所以在起名时应该避免重复以造成程序混乱。


PHP表达式(Expression)

布尔表达式,值得注意的一点是,在PHP中,TRUE的值为“1”,而FALSE的值为NULL,或者是空值。因为在一些语言里FALSE被定义为0或者-1。

此外,PHP会按照字面上的值(literals)理解去判断变量类型。

比如:

$myname = "Brian";

$myage = 37;

echo "a: " . 73 . "
"; //Numeric literal

echo "b: " . "Hello"      . "
"; //String literal

echo "c: " . FALSE      . "
"; //Constant literal

echo "d: " . $myname  . "
"; //Variable string literal

echo "e: " . $myage     . "
"; //Variable numeric literal

结果是:

a: 73 b: Hello c:        d: Brian  e: 37

PHP运算符(operators)

PHP提供了大量有用的运算符,比如计算,字符串和逻辑的运算符。“.”运算符用来连接字符串。

PHP 逻辑运算符(logical)

or”返回值是布尔值。如果 $x 和 $y 至少有一个为 true,则返回 true。

xor”返回值是布尔值。条件中不是A就是B。如果A就返回True,如果是B也返回True。但如果是A和B就返回False,如果即不是A也不是B就返回False。所以条件符合的有且仅有一个为 true,则返回 true。

PHP 结合性运算符(associativity)

这类型的运算符是从右到左计算。

Operator                                          Description                               Example

NEW                                                Create a new object

!                                                        Logical NOT

~                                                       Bitwise NOT

++   --                                                Increment and decrement

+ -                                                     Unary plus and negation

(int)                                                   Cast to an integer                        $c = (int) ($a / $b);

(double)                                            Cast to a float

(string)                                              Cast to a string

(array)                                               Cast to an array

(object)                                              Cast to an object

@                                                       Inhibit error reporting          

@是为了抑制错误显示,让用户看不到,提升用户体验。注意:只是抑制错误,但是错误还是存在的。

=                                                         Assignment


PHP条件表达式(Conditionals)

条件表达式是动态页面的核心,它能够简单地根据不同的条件创造出不同的页面结果。有三种表达方法:ifswitch?(三目运算符)。这个和JavaScript都是一样的。


PHP循环(Looping)

能快速地周而复始地工作直到事情发生为止。循环方式有:whiledo……whilefor。


PHP的函数与对象

函数的好处:

1. 简洁

2. 减少语法和其他编写程序的错误

3. 减少程序文件的加载时间

4. 同时减少执行时间,因为每一个函数都仅仅被解析一次,无论它将被调用多少次。

5. 函数接受参数,这样能够被普遍使用,也同时能被特殊的情况使用。

PHP有上百种已经编写好的函数,使它成为一个丰富的语言。


Includerequire

require()的性能与include()相类似,都是包括并运行指定文件。不同之处在于:对include()语句来说,在执行文件时每次都要进行读取和评估;而对于require()来说,文件只处理一次。这就意味着如果可能执行多次的代码,则使用require()效率比较高。另外一方面,如果每次执行代码时是读取不同的文件,或者有通过一组文件迭代的循环,就使用include()语句。

require的使用方法如:require("myfile.php"),这个语句通常放在PHP脚本程序的最前面。PHP程序在执行前,就会先读入require()语句所引入的文件,使它变成PHP脚本文件的一部分。include使用方法和require一样如:include("myfile.php"),而这个语句一般是放在流程控制的处理区段中。PHP脚本文件在读到include()语句时,才将它包含的文件读取进来。这种方式,可以把程式执行时的流程简单化。

include在用到时加载   require在一开始就加载

include/require_once后缀表示已加载的不加载

PHP系统在加载PHP程序时有一个伪编译过程,可使程序运行速度加快。但include的文档仍为解释执行。include的文件中出错了,主程序继续往下执行,require的文件出错了,主程序也停了,所以包含的文件出错对系统影响不大的话(如界页面文件)就用include,否则用require

require()include()语句是语言结构,不是真正的函数,可以像php中其他的语言结构一样,例如echo()可以使用echo("ab")形式,也可以使用echo "abc"形式输出字符串abc。require()include()语句也可以不加圆括号而直接加参数。

include_once()require_once()语句也是在脚本执行期间包括运行指定文件。此行为和include()语句及require()类似,使用方法也一样。唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。这两个语句应该用于在脚本执行期间,同一个文件有可能被包括超过一次的情况下,确保它只被包括一次,以避免函数重定义以及变量重新赋值等问题。

function_exists("function name")是判断这个函数是否有效。


对象Object

面对对象(object-oriented programming OOP)让函数提升到新的水平。当一些方法要被重用,那么就可以考虑把这些方法和数据放入到对象中去。一起想想看一个社交网站,它有很多部分组成。一个组成部分是要管理所有的用户函数。比如让新用户注册,和让存在的用户更改他们的信息。一般来说,我们会建立一些函数去管理这些并且请求MySQL数据库去记录所有的用户。而我们知道对象后,完全可以建立一个名为User的对象,并且把所有的数据与方法放入到这个对象中里。那么无论什么时候当需要去操作一个用户的数据时,我们就可以简单地建立一个和User类有关的对象。对象中的数据被称为属性,对象中的函数被称为方法。如果你发现需要类外一个类,这个类与User类很相似,但有些不同,这时我们就需要继承User类。那么原来的User类就被成为父类(superclass),而新的类就被成为子类(subclass/derived class)。

声明一个类(Declaring a Class

在使用一个对象之前,必须用关键字class定义一个类。定义一个类包含类名(它是大小写sensitive的),类的属性,和类的方法。可以使用 '->' 来给变量/属性进行赋值。这是变量不需要用$进行声明。

构造函数(Constructors)

在类里面带有参数并且与类名相同的方法被称为构造函数。现在很多使用__construct来命名构造函数。当不再需要这个对象的时候,就需要调用destructor,来释放这个对象所占的内存。但是destructor不需要设计,因为系统会自动释放特定的内存。除非你用到了动态内存,那么你就是要自己设计一个destructor告诉系统释放哪些内存。

声明一个方法(Methods)

声明一个方法与声明一个函数非常类似,但还是有少许不同。比如,方法的命名开头跟随两个下划线(__)。$this是指代现在这个对象,并返回这个对象的属性值。

静态方法(static methods)

在php编程中,static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法”

如果访问控制权限允许,可不必创建该类对象而直接使用类名加两个冒号“::”调用。

User::pwd_string();

class User

{

static function pwd_string()

{

echo "Please enter your password";

}

}

?>

声明属性(Declaring Properties)

声明属性不是必须在类里的,类里没有属性和方法但仍然是合法的。但是为了帮助自己和其他人更好地理解与维护代码,还是建议把属性的声明放入到类里。

$object1 = new User();

$object1->name = "Alice";

echo $object1->name;

class User {}

?>

声明一个常量(Declaring Constant)

定义一个常量需要在常量名前加const。常量名一般使用大写字母,使他们变得更为突出。当常量/变量使用关键字self两个冒号(::),就能够被直接引用。

属性和方法的作用域(Property and Method Scope)

PHP提供了3个关键字来控制属性和方法的作用域。

1. public —— 这些属性是用varpublic关键字声明的。pubilic与var是能够被互换的,虽然这是不被赞成的。当外部的代码要调用这个属性,或者拓展类需要继承它,我们就应该用public来声明。

2. protected —— 这些属性和方法只能被对象中的方法和任何子类引用。当不想被外部代码来调用,但是拓展类希望继承它,我们就可以用protected来声明。

3. private —— 这些成员仅能被同一个类引用,子类也是不能引用的。当我们不想这些成员被外部任何代码方法或者类来调用,就应该使用private来进行声明。

静态属性和方法(static properties and methods)

静态方法可以被直接调用,而属性是不可以的。属性的调用可以使用关键字self和双冒号的方法来调用类内部的静态属性。

继承(Inheritance)

任何类都能被继承。减少代码的重复性,只要改变一小部分,调整不同的地方。使用关键字extends进行拓展声明。


PHP数组(Arrays)

is_array($array_name)返回布尔值,可以判断这个数组是否是有效的。

sort($array_name, SORT_NUMERIC/STRING)通过数字和字符串从小到大排序。

rsort($array_name, SORT_NUMERIC/STRING)通过数字和字符串从大到小排序。

shuffle($array_name)打乱数组,随机排序。

explode(' ',"string")这个是十分有用的方法,他会把输入的string,通过要求分隔成单个元素然后放入数组中。第一个参数是通过什么来分割,第二个是放入的string。

extract()这个方法可以很容易地把数组变成键值对的形式。经常可以用于$_POST$_GET

extract(array,extract_rules,prefix)有三个参数,

第一个array必需。规定要使用的输入。

第二个extract_rules可选。extract() 函数将检查每个键名是否为合法的变量名,同时也检查和符号表中的变量名是否冲突。对非法、数字和冲突的键名的处理将根据此参数决定。可以是以下值之一:

可能的值:

  • EXTR_OVERWRITE - 默认。如果有冲突,则覆盖已有的变量。

  • EXTR_SKIP - 如果有冲突,不覆盖已有的变量。(忽略数组中同名的元素)

  • EXTR_PREFIX_SAME - 如果有冲突,在变量名前加上前缀 prefix。自 PHP 4.0.5 起,这也包括了对数字索引的处理。

  • EXTR_PREFIX_ALL - 给所有变量名加上前缀 prefix(第三个参数)。

  • EXTR_PREFIX_INVALID - 仅在非法或数字变量名前加上前缀 prefix。本标记是 PHP 4.0.5 新加的。

  • EXTR_IF_EXISTS - 仅在当前符号表中已有同名变量时,覆盖它们的值。其它的都不处理。可以用在已经定义了一组合法的变量,然后要从一个数组例如 $_REQUEST 中提取值覆盖这些变量的场合。本标记是 PHP 4.2.0 新加的。

  • EXTR_PREFIX_IF_EXISTS - 仅在当前符号表中已有同名变量时,建立附加了前缀的变量名,其它的都不处理。本标记是 PHP 4.2.0 新加的。

  • EXTR_REFS - 将变量作为引用提取。这有力地表明了导入的变量仍然引用了 var_array 参数的值。可以单独使用这个标志或者在 extract_type 中用 OR 与其它任何标志结合使用。本标记是 PHP 4.3.0 新加的。

第三个参数,prefix可选。请注意 prefix 仅在 extract_type 的值是 EXTR_PREFIX_SAME,EXTR_PREFIX_ALL,EXTR_PREFIX_INVALID 或 EXTR_PREFIX_IF_EXISTS 时需要。如果附加了前缀后的结果不是合法的变量名,将不会导入到符号表中。前缀和数组键名之间会自动加上一个下划线。

代码如下:

$a = 'Original';

$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse"); 

    extract($my_array); 

    echo "\$a = $a; \$b = $b; \$c = $c"; 

?> 

输出: 

$a = Cat; 

$b = Dog; 

$c = Horse 

使用全部参数: 

代码如下:

$a = 'Original';

$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse"); 

    extract($my_array, EXTR_PREFIX_SAME, 'dup'); 

    echo "\$a = $a; \$b = $b; \$c = $c; \$dup_a = $dup_a;";     

?> 

输出: 

$a = Original; 

$b = Dog; 

$c = Horse; 

$dup_a = Cat; 

在action.php中只要使用extract()函数将$_POST全局数据解开: 

action.php 

代码如下:

extract($_POST); //相当于$username = $_POST['username']; //$password = $_POST['password'];

?> 

compact(var1,var2...)函数创建一个由参数所带变量组成的数组。如果参数中存在数组,该数组中变量的值也会被获取。

本函数返回的数组是一个关联数组,键名为函数的参数,键值为参数中变量的值。

本函数执行的行为与extract()正好相反。

例子 1

使用不匹配变量的字符串,以及一个变量名数组:

$firstname = "Bill";

$lastname = "Gates";

$age = "60";

$name = array("firstname", "lastname");

$result =compact($name, "location", "age");

print_r($result);

?>

输出结果:

Array ( [firstname] => Bill [lastname] => Gates [age] => 60 )

其他相关的方法:

current() - 返回数组中的当前元素的值

end() - 将内部指针指向数组中的最后一个元素,并输出

next() - 将内部指针指向数组中的下一个元素,并输出

prev() - 将内部指针指向数组中的上一个元素,并输出

each() - 返回当前元素的键名和键值,并将内部指针向前移动


printf(arg1,arg2,agr++)函数输出格式化的字符串。arg1arg2arg++ 参数将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入 arg1,在第二个 % 符号处,插入 arg2,依此类推。

参数                                                                                             描述

format                                                                                          必需。规定字符串以及如何格式化其中的变量。

                                                                                                    可能的格式值:

                                                                                                     %% - 返回一个百分号 %

                                                                                                     %b - 二进制数

                                                                                                     %c - ASCII 值对应的字符

                                                                                                     %d - 包含正负号的十进制数(负数、0、正数)

                                                                                                    %e - 使用小写的科学计数法(例如 1.2e+2)

                                                                                                    %E - 使用大写的科学计数法(例如 1.2E+2)

                                                                                                    %u - 不包含正负号的十进制数(大于等于 0)

                                                                                                    %f - 浮点数(本地设置)

                                                                                                    %F - 浮点数(非本地设置)

                                                                                                    %g - 较短的 %e 和 %f

                                                                                                    %G - 较短的 %E 和 %f

                                                                                                    %o - 八进制数

                                                                                                    %s - 字符串

                                                                                                    %x - 十六进制数(小写字母)

                                                                                                    %X - 十六进制数(大写字母)

                                                                                                    附加的格式值。必需放置在 % 和字母之间(例如 %.2f):

                                                                                                    + (在数字前面加上 + 或 - 来定义数字的正负性。默认地,只有负数做标记,正数不做标记)

                                                                                                    ' (规定使用什么作为填充,默认是空格。它必须与宽度指定器一起使用。)

                                                                                                    - (左调整变量值)

                                                                                                    [0-9] (规定变量值的最小宽度)

                                                                                                   .[0-9] (规定小数位数或最大字符串长度)

                                                                                                    注释:如果使用多个上述的格式值,它们必须按照上面的顺序进行使用,不能打乱。

arg1                                                                                            必需。规定插到 format 字符串中第一个 % 符号处的参数。

arg2                                                                                            必需。规定插到 format 字符串中第二个 % 符号处的参数。

arg++                                                                                         可选。规定插到 format 字符串中第三、四等等 % 符号处的参数。

PHP printf() 函数


附录:

syntax               /'sintœks/               语法 

keep track of                                   记录

manipulate       /məˈnɪpjuleɪt/          操作

colon                /ˈkəʊlən/                  冒号

deprecate         /ˈdeprəkeɪt/             不赞成

以上是记录学习PHP与mySQL的辛酸史的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:简书。如有侵权,请联系admin@php.cn删除

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能