一开始我一直没有在意那个id_2的含义。最后还是出现了bug.即如果父类没有子类的情况下,下一个父类的子类的值会成为这一个父类的值,造成错位。
原因是while这个语句,他把所有父类的值取出来,然后把id一一传入province_id.当然也把没有子类的父类给传了进去
然后在子类的whlie循环的时候,由于有些父类没有子类,造成子类根据父类id查找不到相应的值,就造成while里面的条件句mysql_fetch_array的值为false.不执行该循环,直接执行下次循环,也就出现了错位的现象。
解决的方法就是设置id_2这个字段,有子类的父类这个id_2字段将设置为1,而没有子类的字段设置成0。这样就不会搜索到那些没有子类的父类了,顺序也就正常了。当然在添加和删除父类和子类的时候需要进行判断,如果该父类没有子类的话就将id_2设置成0,如果有的话就设置成1。具体方法大家应该都会。数据库的操作而已。