您的位置:首页 > 编程语言 > PHP开发

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

2017-08-30 17:13 274 查看
搭建环境,基本语法之类的不说

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代码:

<?php

echo "$_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&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更新数据     是否成功
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: