关于这段代码的疑惑

By peterchen145 at 2013-11-15 13:40:22 • 713次点击

install 文件的第21行到35行,
看不太懂这段代码,谁能帮解释解释

$DBS->select_db($dbname);
if($DBS->geterrdesc()) {
	if(mysql_get_server_info() > '4.1') {
		$DBS->query("CREATE DATABASE $dbname DEFAULT CHARACTER SET $dbcharset");
	} else {
		$DBS->query("CREATE DATABASE $dbname");
	}
	
	if($DBS->geterrdesc()) {
		exit('指定的数据库不存在, 系统也无法自动建立, 无法安装.<br />');
	} else {
		$DBS->select_db($dbname);
		//成功建立指定数据库
	}
}


整个if语句的判定条件if($DBS->geterrdesc())不是有问题吗?在此if语句里的第二个if语句又判定了了一次,而且执行的操作是“exit('指定的数据库不存在, 系统也无法自动建立, 无法安装.<br />');”??

peterchen145 at 2013-11-15 13:43:24
1

外面if语句的判定条件是不是有问题? 在此if语句里的第二个if语句又判断了一次,而执行的操作却是“exit('指定的数据库不存在, 系统也无法自动建立, 无法安装.<br />');”??

peterchen145 at 2013-11-15 13:44:50
2

@peterchen145

函数 $DBM->geterrdesc()

function geterrdesc() {
    return (($this->link) ? mysql_error($this->link) : mysql_error());
}

主楼的代码作用是尝试建立一个数据库,
第一个 if($DBS->geterrdesc()) 是知道有没有指定的数据库,
第二个if($DBS->geterrdesc()) 是在没发现指定的数据库时尝试建立一个数据库后再连接。

admin at 2013-11-15 15:14:57
3

@admin

兄台能留个邮箱吗? 我正在学习youbbs的代码,有什么问题方便请教

peterchen145 at 2013-11-15 21:52:36
4

@peterchen145

从某些角度看,youbbs 的代码很烂,个人觉得并不适合初学者入门参考,这可能会影响你的代码风格,因为这是个人在完全没有php 实例经验的情况下写的,目的是尽量简单一些、性能好一些,所以在php 脚本文件里尽量不用框架、函数,模板上也很差劲,在看了别人比较字符串的并接效率后使用了效率最高的那一种,但为了这几(或者零点几)毫秒的时间而牺牲了可读性……
不建议作为入门学习,倒是建议站在另外的高度来看youbbs 的实现方法(相对用框架来说原生的php 更容易读懂)和缺点。
联系方式见这里 http://saepy.sinaapp.com/topic/47/about

admin at 2013-11-15 23:13:58
5

完成对数据库版本的检查以及创建数据库的功能。

我要购物专家 at 2013-11-21 10:53:03
6
登录 后发表评论