PHP与MYSQL

来源:互联网 发布:淘宝海关拍卖车 编辑:程序博客网 时间:2024/06/05 08:31
 

1、升序排列 sort() 且键值对保持 asort()
   降序排列 rsort() 且键值对保持 arsort()
2、包含文件的两种方式:include   require
   include()在其被调用的位置包含一个文件,也可根据条件来执行该语句,但根据条件执行时必须包含在大括号中;
   include_once()作用与include相同,不过它会首先验证是否包含了该文件,如果已包含则不执行,否则则必须包含。
   require()在任何情况下都会把文件包含在脚本中,出错时会停止执行;
   require_once()确保文件只包含一次,后面再试图包含相同的文件将被忽略。
include和require的区别
(1)无论require()的位置如何,指定文件都将包含到出现require()的脚本中
(2)require()出错时,脚本将停止执行,而使用include()脚本继续执行
3、表单提交方式:post  get
4、获取字符串的长度:strlen()
5、返回数组当前指针位置的元素值:current()
6、包含所有总客户端发出的cookies数据:$_COOKIE
7、读取get方法传递的表单元素值:$_GET["名称"]
8、打开一个文件进行读和写的操作:fopen()
9、set和select可以查询结果赋值给变量(多个)
10、子查询和表连接在任何时候都可以互相替换
11、构造函数:__construct (construct前面是两个”_”)   析构函数:_destruct
12、向表中插入一条记录:Insert into 表名(属性1,属性2,……) values(数据1,数据2,……);
13、连接数据库“test”服务器,参数为:("localhost","root","1234"),删除score表中一条id为1的记录
    $coon=mysql_connect('localhost','root','1234') or die(“链接失败”);
    mysql_select_db('test');
    $query="delete table score where id=1";
    $result=mysql_query($query,$conn);
    mysql_close($conn);
14、PHP连接数据库的步骤
(1)调用mysql_connect函数连接数据库服务器
(2)调用mysql_select_db选择要操作的数据库
(3)进行数据操作,执行sql语句
(4)调用mysql_close关闭数据库连接,将数据返回给数组
(5)显示出信息
16、作用域:局部变量、函数参数、全局变量、静态变量
17、使用array_push()函数追加数组元素(入栈)
    使用array_pop()返回数组的最后一个元素(出栈)
    使用array_shift()返回数组的第一个元素
    使用array_unshift()增加元素到数组头
    使用array_pad()函数修改数组的大小,使其增加到指定的长度
18、PHP环境的网页运行服务器有:IIS、apache、tomcat、weblogic
19、MYSQL默认用户名:root,密码为空
20、MYSQL数据库文件存放目录:MYSQL5.1\data
21、网站根目录:[HTML,PHP]www\htdocs
22、访问本机用:http://127.0.0.1/       http://127.0.0.1:端口/
23、echo与print的区别:
(1)echo返回void,而print返回Boolean类型,通知调用者是否已经成功输出
(2)echo能输出多个字符串
24、\n 换行,\r 回车, \t 制表符
25、判断是否为数组:is_array()
26、删除数组元素:array_pop()、array_shift()
    array_pop()函数返回数组的最后一个元素(出栈),并在结束后重置数组的指针.
    array_shift() 将 array 的第一个单元移出并作为结果返回(出列),将 array 的长度减一并将所有其它单元向前移动一位.所有的数字键名将改为从零开始计数,文字键名将不变.如果array 为空(或者不是数组),则返回 NULL.使用本函数后会重置数组指针.
27、修改数组元素:array_pad()、array_unshift()
    array_pad()函数会修改数组,将其大小增加到指定的长度.这是通过在数组中填充由pad_value指定的值实现的.如果pad_value是正数,将填充到数组的右侧(后面);如果为负,则将填充到左侧(前面).如果等于或小于当前大小,将不做任何操作.
    array_unshift() 将传入的单元插入到 array 数组的开头.注意单元是作为整体被插入的,因此传入单元将保持同样的顺序.所有的数值键名将修改为从零开始重新计数,所有的文字键名保持不变.函数的返回值是 array 数组新的单元数目.
28、判断数组键存在:array_keys()
    判断数组值存在:in_array()
29、返回一个数组中单元的键:array_keys()
    返回一个数组中单元的值:array_values()
30、删除重复值,返回一个唯一值组成的数组:Array_unique()
31、PHP实现多态:接口、继承、抽象
32、字符串的定义方式:单引号‘’、双引号“”、定界符<<<
33、识别转义字符的是:双引号
34、需要处理的上传数据保存在全局数组$_FILES中
35、检查文件是否是上传文件:is_uploaded_file()
36、PHP中的对象分为:系统内置、自定义
37、类型转换分为:类型强制转换、类型自动转换
38、函数传递参数的方法:按值传递、按引用传递
按值传递:函数参数通过值传递(因而即使在函数内部改变参数的值,它并不会改变函数外部的值)如果希望在函数外部范围内也能反映出这些修改,则可以按引用传递参数。  
39、定义静态变量:static    定义常量:define() 常量只能用 define() 函数定义,而不能通过赋值语句。  常变量:const 
40、克隆对象:clone
41、在类里面定义的没有方法体的方法就是抽象方法
42、声明抽象方法时要加关键字:abstract
43、定义接口:interface  用implements让类执行一个接口
    用extends让一个接口去继承另一个接口
44、被final标记的均无法重载
45、POST与GET的区别:
(1)使用POST,HTTP会将表单的输入信息进行包装后发送,而GET是附加在Action所设定的URL之后发送
(2)使用POST,用户数据的长度没有限制,而GET所传送的数据长度受到限制(一般为2k字节)
46、web开发架构:客户端-服务器(C/S)、浏览器-服务器(B/S)
47、三层架构垂直划分:界面、应用逻辑、存储
48、PHP原理:
(1)当用户在浏览器地址中输入要访问的PHP页面文件名,然后回车就会触发这个PHP请求,并将请求传送到支持PHP的WEB服务器。
(2)WEB服务器接受到这个请求,并根据后缀进行判断,如果是一个PHP请求,WEB服务器从硬盘或者内存中取出要访问的PHP应用程序,并将其发送给PHP引擎程序。
(3)PHP引擎程序会对传送过来的文件进行扫描并根据命令从后台读取,处理数据,并动态生成HTML页面。
(4)PHP引擎程序将生成的HTML页面返回给WEB服务器,WEB服务器再将HTML页面返回给用户。
49、语法标记:<?php    ……     ?>、<script language=“php”> …… </script>、<? ……  ?>
50、代码注释:// 、   /*……*/  、    #
51、输出语句:echo(无返回值,比print稍快,能输出多个字符串)、print(总是返回1)、printf、sprintf(将输出指派到字符串,不直接指派到标准输出)
52、数据类型:
布尔型(boolean)、整型(integer)、浮点型(float、double)、字符串(string)
数组(array)、对象(object)、NULL
53、连接运算符:"."    
54、自加自减:运算后原数都变,符号在前的变,在后的不变。
55、逻辑运算符:xor(异或)仅一个元素为真时为真
56、==等于、===全等、!=不等、=赋值、<>不等、!==非全等、
57、while 语句和do...while语句在功能上相似;唯一区别是while语句中的代码块可能永远不会被执行;而do...while语句中的代码块总是至少会执行一次。
58、可以为输入参数指定默认值,在没有提供其他值的情况下,就会把这个默认值自动赋给该参数。如果提供了其他值,新提供的值就会覆盖这个默认值。默认参数值必须是常数表达式,而不是指定函数调用或者变量等非常量值。当使用默认参数时,任何默认参数必须放在任何非默认参数的右侧,否则,可能函数将不会按照预期的情况工作。  
59、print_r( )函数输出数组
60、数组的最后一项是不能加逗号的,这样定义是错误的 array(‘zzu','php',);
61、数组的键是唯一的,如果指定的键名已经有了值,则该值会被覆盖。
62、队列与栈数据结构的区别:队列是先进先出(FIFO),栈是后进先出。
63、用unset()删除一个数组变量,即使是数字索引,此函数也不会重新对数组索引排序
64、sizeof ()函数是count()别名。它们的功能是一样的。如果可选的 mode 参数设为1,count() 将递归地对数组计数.对计算多维数组的所有单元尤其有用.mode 的默认值是 0
65、current()函数返回数组当前指针位置的数组值。如果内部指针指向超出了单元列表的末端,current() 返回 FALSE。next()函数返回紧接着放在当前数组指针的下一个位置的数组值。
current()与next()函数不同,current()不移动指针,而next()函数需要移动指针。
66、List()函数与array()函数类似,只是它可以在一次操作中从一个数组内提取多个值,同时为多个变量赋值。
67、each()函数返回当前键/值对,并将指针推进一个位置。 键值对被返回为四个单元的数组,键名为 0,1,key 和 value。单元 0 和 key 包含有数组单元的键名,1和value包含有数据。如果执行each()前指针位于数组末尾,则返回FALSE.
68、reset()用于将数组指针移动到开始位置,end()将指针移动到最后一个位置。
69、foreach()循环处理数据,从数组中提取每一个键/值对,直到获得所有项,或满足某些内部条件为止。有两种方法:(1)从数组中获得每个值,每次迭代都将指针后移。(1)处理包含键/值的数组。
70、array_merge()函数:
(1)<?php  $array1=array ("color" => "red", 2, 4);
       $array2 = array ("a", "b", "color" => "green", "shape" => "trapezoid", 4);        
       $result = array_merge ($array1, $array2); print_r($result); 
     ?>
Result:
Array([color] => green [0] => 2 [1] => 4 [2] => a [3] => b [shape] => trapezoid [4] => 4)
(2)<?php  $array1=array(1=>"php爱好者站"); 
            $array2=array(3=>'www.zzu.edu.cnt');  
            $result=array_merge($array1,$array2);
            print_r($result);   >
Result:
Array([0] => php爱好者站 [1] =>www.zzu.edu.cn)
71、如果想完全保留原有数组并只想新的数组附加到后面,用 + 运算符
72、array_merge_recursive()函数与array_merge()相同,可以将两个或多个数组合并在一起,形成一个联合的数组.两者之间的区别在于,当某个输入数组中的某个键已经存在于结果数组中时会以怎样的处理方式.array_merge()会覆盖前面存在的键/值对,替换为当前输入数组中的键/值对,而array_merge_recursive()将把两个值合并在一起,形成一个新的数组,并以现有的键作为数组名.
73、implode(‘分隔符’)将数组的内容组合成一个字符串。
74、array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列. 如果 非负,则序列将从 array 中的此偏移量开始.如果 为负,则序列将从 array 中距离末端这么远的地方开始.
75、array_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值.注意键名保留不变。
76、array_intersect_assoc() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意和 array__intersect() 不同的是键名也用于比较。
77、bool isset(var,var,……)如果 var 存在则返回 TRUE,否则返回 FALSE;
 isset() 只能用于变量,因为传递任何其它参数都将造成解析错误。
78、要求写一个函数将一个数组 array(8,2,6,7,1,4,0) 从小到大排列
<?php
/**
 * @author user1
 * @copyright 2011
 */
$arr=array(8,2,6,7,1,4,0);
function array_sort($arr)
{
    $arrlen=count($arr);
    for($i=0;$i<$arrlen;$i++)
       {
           for($j=$arrlen-1;$j>$i;$j--)
              {
                  if($arr[$j]<$arr[$j-1])
                     {
                         $tmp=$arr[$j];
                         $arr[$j]=$arr[j-1];
                         $arr[j-1]=$tmp;
           
                      }
               }
       
         }
    return $arr;
}
?>
79、通过“对象->成员”的方式访问对象中的成员
80、大多数类都有一种称为构造函数的特殊方法。当创建一个对象时,它将自动调用构造函数,也就是使用new这个关键字来实例化对象的时候自动调用构造方法,在一个类中只能声明一个构造方法。与构造函数相对的就是析构函数,析构函数不能带有任何参数。
81、数据成员在类中使用”var”来定义,只要是成员属性前面有其它的关键字就要去掉原有的关键字“var”。
82、方法在类中被定义成函数形式,在方法中访问类成员变量时,你应该使用$this->name,否则对一个方法来说,它只能是局部变量。
83、$obj = new Something;
右边的是第一步:在内存中分配空间;左边的是第二步,$obj是一个对象引用,它是一个指针,指向第一步在内存中分配过的空间地址。而不是将右边的内存中的空间复制给$obj.
84、在以变量$var1为类的实体对象时,如果使用$var2=$var1,那么,在$var2中,$var1的复制被代入。明显的,$var2为了指向与$var1相同的对象,就要写成$var2=&$var1,必须要加上&作为参照。
85、“__get()”和“__set()”来获取和赋值其属性,自动调用__get()和__set()方法来帮助我们直接存取封装的私有成员的。 以及检查属性的“__isset()”和删除属性的方法“__unset()”。
__get()方法:这个方法用来获取私有成员属性值的,有一个参数,参数传入你要获取的成员属性的名称,返回获取的属性值,这个方法不用我们手工的去调用,因为我们也可以把这个方法做成私有的方法,是在直接获取私有属性的时候对象自动调用的。因为私有属性已经被封装上了,是不能直接获取值的。
__set()方法:这个方法用来为私有成员属性设置值的,有两个参数,第一个参数为你要为设置值的属性名,第二个参数是要给属性设置的值,没有返回值。这个方法同样不用我们手工去调用,它也可以做成私有的,是在直接设置私有属性值的时候自动调用的,同样属性私有的已经被封装上了,如果没有__set()这个方法,是不允许的
86、Public:可以自由的在类的内外任何地方进行参照、变更。
Private:只能在类的方法中进行参照、变更。
Protected:能够在这个类以及继承了这个类的另一个类的方法中进行参照、变更。另外,在继承的类中,能够写入访问指定。
87、“isset()”函数的应用,isset()是测定变量是否设定用的函数,传入一个变量作为参数,如果传入的变量存在则传回true,否则传回false。可以在对象的外部使用“isset()”函数来测定私有成员属性是否被设定了,然后在类里面加上一个“__isset()”方法就可以了,当在类外部使用”isset()”函数来测定对象里面的私有成员是否被设定时,就会自动调用类里面的“__isset()”方法了帮我们完成这样的操作,“__isset()”方法也可以做成私有的。
88、“unset()”这个函数的作用是删除指定的变量且传回true,参数为要删除的变量。在一个对象里面加上“__unset()”这个方法,就可以在对象的外部去删除对象的私有成员属性了。在对象里面加上了“__unset()”这个方法之后,在对象外部使用“unset()”函数删除对象内部的私有成员属性时,自动调用“__unset()”函数
89、数据库配置文件
<?php
//数据库配置文件,db_config.php
$db_server="localhost";
$db_user="root";
$db_pwd="123456"
$da_name="test";
?>
90、面向对象的读取数据库信息
<?php
//class_user.php
class UserInfo
{
   private $userName;
   private $userPSW;
   private $userAge;
   private $userGrade;
   private $userInfo;

   public function_construct($name)
      {
        require_once("db_config.php");
        $sql="select * from user where username='$name'";
        $conn=mysql_connect($db_server,db_user,$db_pwd);
        $my_db=mysql_select_db($db_name,$conn);
        $result=mysql_query($sql,$cconn);
        $this->UserInfo=mysql_fetch_array($result);
        mysql_close($conn);
        $this->getInfo();
       }
   private function getInfo()
      {
        $this->userName=$this->userInfo["username"];
        $this->userPWD=$this->userInfo["userpsw"];
        $this->userAge=$this->userInfo["userage"];
        $this->userGrade=$this->userInfo["usergrade"];
       }
   public function getUserNmae()
      {
        return $this->userNmae;
       }
   public function getUserPSW()
      {
        return $this->userPSW;
       }
   public function getUserAge()
      {
        return $this->userAge;
       }
   public function getUserGrade()
      {
        return $this->userGrade;
       }
}
?>
实例化:
<?php
require_once{"class_user.php"};

$user=new UserInfo("Tom");

$username=$user->getUserName();
$username=$user->getUserPSW();
$username=$user->getUserAge();
$username=$user->getUserGrade();

echo "your name is".$username."<br>";
echo "your password is".$userpsw."<br>";
echo "your age is".$userage."<br>";
echo "your grade is".$usergrade."<br>";
?>
91、通过parent::调用父类方法
92、如果我们不希望一个类被继承,我们使用final来修饰这个类。
93、用abstract修饰的类表示这个类是一个抽象类,用abstract修饰的方法表示这个方法是一个抽象方法。
94、一个简单抽象的类,如果它被直接实例化,系统会报错
95、一个类中,如果有一个抽象方法,这个类必须被声明为抽象类。
96、抽象类继承另外一个抽象类时,不用重写其中的抽象方法。 抽象类中,不能重写抽象父类的抽象方法。
97、接口(interface)是抽象方法和静态常量定义的集合。 接口是一种特殊的抽象类,这种抽象类中只包含抽象方法和静态常量。 接口中没有其它类型的内容。
在接口中只能有抽象方法。如果在接口中出现了非抽象方法,会报错。
在接口中的抽象方法只能是public的,默认也是public权限。 并且不能设置成 private 或者 protected 类型,否则会报错
98、abstract 和 final 修饰符不能修饰接口中的抽象方法
99、在接口中可以定义静态常量。而且不用static修饰就是静态的常量。
100、类实现接口要使用 implements 。 类实现接口要实现其中的抽象方法。
 一个类可以实现多个接口。
101、一个类只可以继承自一个父类。接口可以实现多个,这样就是多继承了。
102、建议在定义方法参数时,要使用类型提示。
103、使用instanceof运算符,可以判断当前实例是否可以有这样的一个形态。
104、在php.ini 中,一个分号 ; 表示注释。
105、;date.timezone =  将;去掉,改成   date.timezone = PRC
     error_reporting = E_ALL & ~E_NOTICE 改成 error_reporting = E_ALL
106、如果不想显示错误信息给用户看到,设置php.ini中 display_errors = OFF
107、可以通过PHP5支持的try catch 语句捕获并处理异常。在 try块中,放置可能产生异常的代码片段。在catch块中放置对这个异常处理的代码。如果try块未产生任何异常,try块将运行完毕,catch块内容不会被运行,一个正则表达式分为三个部分:分隔符,表达式和修饰符。
109、文本框:Text 产生简单的单行文本输入字段,为了获取多行文本,用<textarea>标志
密码框:Password  和text一样产生简单的单行文本输入字段,但不会在屏幕上显示输入内容
单选框:Radio    产生可开闭的小单选按钮。
多选框:Checkbox    多项选择 允许用户为一个指定的表单同时选择多个值。
Submit    产生用于将所有名称数值对提交给表单处理程序的按钮
Reset   用于将所有输入方法复位为空值或缺省值
Image   将提交按钮变成图形,这个数值与提交一致,只是选择图形时鼠标位置
        x、y坐标也发送给表单处理程序
Button   产生不与脚本进行特定交互功能的按钮
110、method指定向服务器提交的方法:一般为post或get方法, post方法比较安全
111、<input type=…>
     <textarea>…</textarea>
     <select>
        <option>…</option>
     </select>
     <input type="submit"…>
112、<?php
    if (isset($_POST['name']))
    {
       $name = $_POST['name'];
       $email = $_POST['email'];
       printf("Hi %s! <br />", $name);
       printf("The address %s will soon be a spam-magnet! <br />", $email);
    }
?>
<form action="subscribe.php" method="post">
    <p>
        Name:<br />
        <input type="text" id="name" name="name" size="20" maxlength="40" />
    </p>
    <p>
        Email Address:<br />
        <input type="text" id="email" name="email" size="20" maxlength="40" />
    </p>
    <input type="submit" id="submit" name = "submit" value="Go!" />
</form>
113、单选按钮:
<p>
  sex:<br />
      <input type="radio" name="sex" value="男" checked="true" /> 男
      <input type="radio" name="sex" value="女"  /> 女
</p>
<input type="submit" name = "submit" value="Go!" />
114、下拉列表:
<select name="Name"multiple size="number">
     <option value="Item_Name1">选项名称1</option>
     <option value="Item_Name2">选项名称2</option>
</select>
115、数据抽象的三个层次:物理层、逻辑层、视图层
116、Primary key属性用于确保指定行的唯一性。指定为主键的列中,值不能重复,也不能为空。为指定的主键的列赋予auto_increment属性是很常见的。
117、显示数据库列表:mysql> SHOW DATABASES;
     显示库中的数据表:mysql> use mysql;       /*打开库
                      mysql> show tables;   /*显示
118、建库:mysql> creat database school;
     删除库:mysql>drop database school;
119、许多词在MySQL中是被明确保留,有特殊含义,如:create,index,table(保留字),不要用保留字作数据库对象名称
120、字符串在ANSI模式中运行时只能用单引号.
121、CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
CHAR列的长度固定为创建表时声明的长度。长度可以为从0到255的任何值。
VARCHAR列中的值为可变长字符串。长度可以指定为0到65,535之间的值。
122、 DATE:日期。支持的范围为‘1000-01-01’到‘9999-12-31’。MySQL以‘YYYY-MM-DD’格式显示DATE值,但允许使用字符串或数字为DATE列分配值。
123、设计一个表的时候,下列问题时必须考虑的:

    需要把哪些种类的数值保存到数据表里面?

    这种类型的值要占用多少存储空间?

    这种类型的值长度是否固定不变?

    这种类型的值如何进行比较和排序?

    这种类型的值可以用null值吗?

    如何对这种类型的值进行索引呢?
124、AUTO_INCREMENT:它能为新插入的行赋一个唯一的整数标识符。为列赋此属性将为每个新插入的行赋值为上一次插入的ID+1。
可以在建立数据表的时候,使用 auto_increment=n 选项为序列编号明确地设定一个初始值。
125、Default属性确保在没有任何值可用的情况下,赋予某个常量值。这个值必须是常量,因为MYSQL不允许插入函数或表达值。如果已经为此列指定了NULL属性,没有指定默认值时,默认值将为NULL。
126、INDEX:为了提高数据库的查询速度,使用索引通常是最重要的一个步骤。索引是加快数据表内容访问性能的基本手段。索引可以包含重复键值。可以为一个数据表建立多个索引。
127、(1)数据库的选取,创建,丢弃和变更
use、create database、drop database、alter database
(2) 数据表和索引的创建,变更和丢弃
create table、drop table、create index、drop index、alter index
128、创建一个表:
CREATE TABLE product (

   rowID INT NOT NULL AUTO_INCREMENT,
   productid varchar(8) NOT NULL,
   name varchar(25) NOT NULL,
   price DECIMAL(5,2) NOT NULL,
   description MEDIUMTEXT NOT NULL,
   PRIMARY KEY(rowID)
)

 

 

 

 

 

 

 

 

 

 


 

原创粉丝点击