PHP关于数据库的一个类

小马佩德罗 发布于 2013/12/09 14:51
阅读 188
收藏 0

我学PHP

我学PHP没多久,有些问题可能会有些小白,大家不要笑话。

这个问题对有经验的前辈们应该是不难,不过我研究了好几天。。来请教一下前辈们能不能给点建议。

问题如下:

我想写一个功能类,来实现数据库中常用的CRUD来提高我程序的执行度:

四个执行子类就是mysql数据库的CRUD。可是遇到了两个问题我研究好久了,查了不少东西,没解决掉,只能来问前辈了。

1.增加的元素会有时候多有时候少,比如有时候$db= new db("数据库名","元素一","值一")。可是我要是数据库里有N个元素,我一直到value到("元素N")怎么办啊?

2.查询也是可以输入不同的参数来进行操作。查询我做完了,声明了一个静态量在里面(self::静态名=query($sql);我也不知道这样做好不好),然后再外部通过(className::静态名来输出)。可是在外部循环调用有问题,可能是我做的不对,那应该怎么做呢?

比如我在类的内部这样处理:(self::test=遍历($result))

然后再外部调用的时候:

while(className::test){

echo className::test['元素名'];

}只能输出一次,是我逻辑错误还是不可以这样用呢?

如果是您,您会怎么写这个类呢?求点经验与心得。

如果问题在您的帮助下解决,我将感激不尽。

<?php 
	$mysqli = new mysqli("localhost","root","111","thinkphp");
	if(mysqli_connect_errno()){
		echo "数据库连接失败".mysqli_connect_error();
		$mysqli=null;
		exit;
		}
		echo "数据库链接成功";
		$sql="select * from gk_test";
		$result = $mysqli->query($sql);
	    
		while($rows=$result->fetch_assoc()){
		
		print_r($rows);
		echo'<br>';
		}
		$mysqli->close();
?>

大概上就是这个意思,这样就可以正常输出,可是我封装之后就只能输出一次。

在封装里我把$rows定义为常量,然后给他用slef::赋值后面的sql语句,然后在外面用classname::进行while循环,只循环一次就over了,应该是不对,我想问问怎么样定义封装里面的东西才能在外面很好的进行输出?

我看了两个前辈的回复,感谢给我的建议,我已经差不多解决了第一个问题,谢谢。

可是关于这个问题我还是没懂。。不怎么懂底层原理。。有点绕不过来。。见谅

 

加载中
0
Tuesday
Tuesday

典型的不理解while 跟 foreach特性的phper.

不过可以理解.

1: $db= new db("数据库名",array('字段'=>'值')); 这样是不是更适合php的写法?
2: while(className::test) 很想让你去看看迭代器.

0
梅开源
梅开源

我不是很清楚地理解你的话。

1. 是要查询数据库某表里若干个元素? select * from xxx order by xxx asc/desc limit N

2. while条件下,执行大括号里面,然后你没移动资源指针?看下php手册里的end,current之类函数。 懒得while+ list+操作指针操作,则用foreach。

3. 很多网站容易找到的mysql db类你没看过源码吗,基本封装很简单的。

4. 建议先写原生php代码和php+html+css混合代码熟练后再用类再MVC。php混合代码一波流是门战术。


返回顶部
顶部