Yii 关联查询with详解

Yii的关联查询确实是一个方便的东西,网上的资料也很多,但是大部分都是Ctrl+c,Ctrl+v,有些东西一直没有人出来详细的写篇文章说明一下,在参考了网上很多资源以后,加上自己的的一些理解,写下了这篇博客,给广大初学者朋友们指点一下迷津。

借鉴一点别人的东西。。。

 

YII 支持四种类型的关系:

Yii的relations()方法 join查询

可能存在两个活动记录对象之间的关系有四种类型:

  • BELONGS_TO: 例如,成员属于一个团队;
  • HAS_ONE: 例如,成员有个人资料;
  • HAS_MANY: 例如,一个团队有很多成员;
  • MANY_MANY: 例如,成员有很多的技巧和技能是属于这个成员的;

除了上述的关系类型,还支持一种特殊的关系称为STAT,可以用来进行统计查询(或聚合查询)。它检索聚合对相关对象的信息,如每个帖子,对于每个产品,平均分数为注释的数目等。

PHP转换编码问题GBK/UTF-8

在实际项目中,有时候会遇到远程接收到的编码,或者数据库里取出的编码与实际文件编码不一致的情况,这样就非常容易出现乱码,如果简单的用iconv函数转码的话,有时又无法保证对方传过来的一定是某种编码。

举个例子:我现在的项目开发编码是GBK,而又有很多地方需要用JSON来接收、发送数据,接收到的数据一定是UTF-8编码(非UTF-8中文无法encode和decode),但我需要把接收来的数据用在我们的系统中,这样就必须转码一次,当我们需要发送JSON数据给其他接收者的时候,又必须将编码从GBK转成UTF-8。超级麻烦,而且极易出错,因为我们无法特别准确的定位文本现在的编码。于是诞生了下面两个函数。

PHP防止SQL注入的一种思路

问题描述:

  如果用户输入的数据在未经处理的情况下插入到一条SQL查询语句,那么应用将很可能遭受到SQL注入攻击,正如下面的例子:

1
2
3
$unsafe_variable=$_POST[‘user_input’];
 
mysql_query(“INSERT INTO `table` (`column`) VALUES (‘”.$unsafe_variable.”‘)”);

  因为用户的输入可能是这样的:

1
value’); DROP TABLE table;–

  那么SQL查询将变成如下:

1
INSERTINTO`table` (`column`)VALUES(‘value’);DROPTABLEtable;–‘)

  应该采取哪些有效的方法来防止SQL注入?