首先第八章主要是讲数据库的继续深入探讨的,之前我们一直都是一个数据库只有一张表,但是有的时候就需要一个数据库多张表,并且这些表之间还互相有所联系。
表与表之间的关联主要是通过外键,例如一个用户表user_table(主键是user_id),一个用户信息表info_table,在用户信息表里面有一列user_id来引用用户表中相应的一行,这样就能建立联系了。
虽然这样整理数据库可以令结构清晰一点,存储的重复内容减少,但是相应的在查找的时候就会变得麻烦起来:
$query="SELECT * FROM info_table WHERE info_id=1";//info_id作为info_table主键
$result=mysqli_query($dbc,$query);
$row=mysqli_fetch_array($result);
$query2="SELECT * FROM user_table WHERE user_id=".$row['user_id'];
$resut2=mysqli_query($dbc,$query2);
$row2=mysqli_fetch_array($result2);
要获取一个完整的消息变得要查询多次,从一个表中获取了user_id才能根据这个user_id在user_table中获取更多有关信息,如果表的数目多起来查询就更加不堪入目了!为此SQL有一次查询多个表的方法来解决这个问题:
这个是书本的一个例子了,选择不同表的列可以用点号(.),FROM哪个表用INNER JOIN来连接,用ON来表明连接条件!换回我们的user_table和info_table的例子就是:
SELECT info_table.*,user_table.* FROM info_table
INNER JOIN user_table ON(info_table.user_id=user_table.user_id)
WHERE info_table.info_id=1;
这样的SQL语句也是比较长的,有更加简化的方法:
如果ON()里面的列名相同可以简写为USING(user_id)这样子
甚至可以利用AS来改名来简写:
SELECT it.*,ut.* FROM info_table AS it
INNER JOIN user_table AS ut USING(user_id)
WHERE it.info_id=1;
SELECT info_table.name AS info_name,user_table.name AS user_name
FROM info_table
INNER JOIN user_table USING(user_id)
WHERE info_table.info_id=1;
这样最后$row['info_name']和$row['user_name']就不会搞混了
然后到第九章,第九章介绍SQL查询时LIKE的语法
通常我们SELECT * FROM table WHERE title='hello';那么title列的值就一定要与hello相等(一模一样)才能被选中,如果我们想让查询不要那么严格就可以利用LIKE:
SELECT * FROM tbale WHERE title='%hello%';那么返回的列中只要包含了hello都会被选中,而且不区分大小写!除了%之外还有_,例如title='_hello%';那么hello前面就只能有一个字符了
还介绍了一些字符串函数:
explode()分解字符串函数:$words=explode(' ','hello world');第一个参数是分隔符,第二个参数是用于分割的字符串,返回的一个数组
implode()连接字符串函数:$string=implode('&',$string_array);第一个参数是用于连接的连接符,第二个参数是字符串数组,把各个元素用第一个参数连接起来成为一个字符串返回。
str_replace()替换函数:$new_str=str_replace('old','new','old year happy!');用第二个参数把第一个参数更换了返回
substr()获取子串函数:$sub_str=substr($string,0,100);获取$string第1个字符起,100个字符返回
另外第九章还介绍了页面分页显示内容的方法:把1 2 3 4这些数字变成连接<a></a>并且href用自己重新处理,利用URL发出$_GET参数传送当前页面来控制显示内容
还有自定义函数:function func_name(param) { return ;}
最后第十章介绍了正则表达式:
正则表达式用//包围住,^表示开始,$表示要结束,\d代表数字,另外上面的可以简写/^\d{10}$/
最后来一个综合一点的例子:
/^\(?[2-9]\d{2}\)?[-\s]\d{3}-\d{4}$/
解释:()里面有3个数字,第一个数字是2-9,另外2个0-9,()可有可无,因为后面跟了个?,之后是一个字符,是-或者\s,只来就是3个数字,-,再4个数字,结束
PHP中怎样使用正则表达式呢:
preg_match($regex,$string);判断$string是否满足$regex这个正则表达式的要求
preg_replace($regex,$new,$string);把满足$regex这个正则表达式的全部用$new来替换,在返回