写第一个PHP项目——《博客系统模型》,心得与体会

来源:互联网 发布:电子报刊手机制作软件 编辑:程序博客网 时间:2024/06/14 09:23


搭建环境,基本语法之类的不说




1.


PHP代码的模块分类:


Html画图本身


————————POST或GET接口,接受用户操作


————————————————————————数据库查询Sql语句书写


————————————————————————————————————Query语句返回的数据处理


——————————————————————————————————————————————————打印出echo语句,完成动态绘图





2.

"select * from blog WHERE  title like %$key% ORDER BY  id DEC  limit 5"


这种写法中


   %%   两个百分号,夹着的意思

的意思。



3.

index.php页。


最上端的<form>   </>
应该设置的  action   ——————>为  "index.php"


4.


"select * from blog WHERE  title like %$key% ORDER BY  id DEC  limit 5"



中的  DEC写错了。

应该是


 ORDER BY  id DESC 


DEC ————>错误


DESC————>正确 (逆序的意思)



5.



$w = "title like   %$key%  ";


$w = "title like   '%$key%'  ";




两种写法,本质上都可以。


具体要弄清楚,就去看   单引号、双引号在PHP中的区别。


"select * from blog WHERE  title like %$key% ORDER BY  id DEC  limit 5"5.


再谈PHP单引号和双引号区别


http://www.cnblogs.com/llsun/archive/2012/07/16/2593027.html



6.



iconv_substr($rs['contents'], 0, 30, "UTF-8")


iconv_substr(       ...      ,   ...   ,   ...   ,     ...     )
方法的作用:??



第1个参数

原字符串


第2个参数

起始截取位置


第3个参数

末尾截取位置


左闭右开区间。


第4个参数

文字的编码排版集


iconv_substr(                      )

的提示

str :   string    , 

offset   :   int    ,

[      length  :   int  |  string       =      '  iconv_strlen ( $str    ,     $charset )  '    ]  ,

[      charset   :   string    =      '   ini_get  (   " iconv.internal_encoding     "  )  '   ]


这样的参数提示。

  [    ]   方括号,应该是   表示里面的东西是一块的,  是打包的

int |  string   , 表示类型待定,   会是     整数型   和   字符串型        中的一款。
charset :  string   =    '   方法名得到  字符集类型      '       ,  表示的是     如果没有传进值,  则默认为后面方法里的取值。      =  等号,表示当不传时的默认取值。



噢啦!!写完10条后回头写这个!
撒花!!



7.



iconv_substr($rs['contents'], 0, 30, "UTF8"); 

提示错误:


Notice: iconv_substr(): Wrong charset, conversion from `UTF8' to `UCS-4LE' is not allowed in F:\Php Projects\blog\index.php on line 70



改成下面这样,则一切正常:

iconv_substr($rs['contents'], 0, 30, "UTF-8");


多加了一条横杠:


参见

Wrong charset, conversion from `UTF-8' to `UCS-4LE' is not allowed
https://stackoverflow.com/questions/1602310/zend-framework-and-string-covertation-using-iconv




1down vote

the iconv library was expecting a string encoded in 'UCS-4LE', but received one that it detected as 'UTF-8'. You probably have a different default encoding on the new server. Try passing the third parameter to the constructor (as 'utf-8').




之后,则一切正常。

能够正常显示。




8.



if (!empty($_GET['keys'])) {    $key = $_GET['keys'];    echo $key ."<br/><br/>";    $w = "title like   '%$key%'  ";//————————>搜索标题。————————>标题中有  ??????key??????? 这样的字符的项。   (如果单纯  %% 则显示所有不为Null的项。)} else {    $w = 1;}

这一方法,会每次调用 index.php 都自动运行。

区别只在于   $_GET['keys']  这个方法
的值
是否为Empty。



9.


对于  

<form action="" method="get" style='align:"right"'>

中 

 action

写 "index.php" 
的结果


写""            (空着)
的结果



一模一样的情况的解释:


 不写action的情况下form提交到的位置》   http://blog.csdn.net/tengdazhang770960436/article/details/6923931

PHP中如果不写清楚要提交到的action的位置的话,那么系统默认的是当前的页面






10.

PHP


的$_GET方法

——————————>是接收   一切  “    mehod = "get"      ”   的URL传值的   URL 中的值。


——————————————————>  form这种表单形式,  其实本质上  也是生成了    www.xyz.com/index.php   ?  a= 1  & b=2   这样形式的   URL  。



列举形式:

二、$_Get方法

(1)获取通过URL的传值

Example 1

新建两个PHP文件,1.php,2.php

1.php代码:

<a  herf="2.php?id='10'&name='xiaoqiang'">传值</a>  在1.php中单击超链接传值

 

2.php代码:

复制代码
<?phpecho "$_Get['id']";echo "$_Post['name']";?>
复制代码

 

(2)$_Get方法动态传值

<a href="newfile.php?page=<?php echo "java";?>&pageone=<?php echo "1";?>">GET方法动态传值</a>



第二种形式是  :
:::::

$_GET 变量

预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值。

从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送信息的量也有限制。

实例

form.html 文件代码如下:

<html><head><meta charset="utf-8"><title>菜鸟教程(runoob.com)</title></head><body><form action="welcome.php" method="get">名字: <input type="text" name="fname">年龄: <input type="text" name="age"><input type="submit" value="提交"></form></body></html>

当用户点击 "Submit" 按钮时,发送到服务器的 URL 如下所示:

http://www.runoob.com/welcome.php?fname=Runoob&amp;age=3



可明显看到:


最后走的都是  URL 的路线————————>  拼接成   URL  。

这就是背后的原理。




11.


$sqlup = "update blog set hits=hits+1 WHERE  id = '$rs'";


update  语句的用法



set  语句的用法

【足以可见  Sql  语言,也是一门有自己语法的语言】。




12.


设置主键的方式。

以及主键非空


以及主键自增

以及主键独一无二。


尽在 PHPStorm  和  收藏夹。



13.


$sql = "update blog set title=    '$title'   ,contents=    '$contents'   WHERE  id=$hid ";






$sql = "update blog set title=    $title   ,contents=    $contents     WHERE  id=$hid ";



的区别:


——————————在于



第一行可以正常运行,

第二行不可以正常运行


第一行用  单引号    '  '  来锁住  $  title    和     $ contents  的值,  (参见   收藏夹——  单引号、双引号的区别)

来不使里面的     【中文字】【空格】【换行】等跑出来。——————进而可以正常按照文本形式,进行数据库  Query操作。




第二行,【中文字】【空格】【换行】会被编码拆分,以及做各种转义处理。

就会报  “测试6”  not  in  filedList


这样的错误。



而第一行正常运行无误。







14.

$sqlup = "update blog set hits=hits+1 WHERE  id = '$id'";
mysqli_query($conn, $sqlup);



$sql = "select * from blog where id= $id ";
mysqli_query($conn, $sql);

这两句Query的返回值,是不一样的。


容易出错场景:

视为都返回   query_result 。
然后用  $rs    去盛装   query_result  的  fetch_aaray 。
——————————————————————————————>结果导致,类型转换出错。



因为   mysqli_query (                      $link   ,    $query           )

返回结果  为:

boolean |    mysqli_result

即,在 ——————>   select   命令时,返回的是   mysqli_result

而在 ————————>  update  命令时,返回的是      true     or     false     ,  用来指示   update更新数据     是否成功









原创粉丝点击