初学php 遇到问题。先感谢大家不厌其烦给予指点。谢谢拷贝的一段代码
//定义:
$server = "localhost"; // 数据库服务器,一般为“localhost”
$db_username = "root"; // MySQL 用户名
$db_password = "123456"; // MySQL 用户密码
$db_name = "test"; // 数据库名称
$pconnect = 0; // 数据库持久连接 0=关闭, 1=打开class dbstuff {
function connect($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $halt = TRUE) {
if($pconnect) {
if(!$this->link = @mysql_pconnect($dbhost, $dbuser, $dbpw)) {
$halt && $this->halt('Can not connect to MySQL server');
}
} else { //当$pconnect=0 会执行到 这里、
// 问1: $this 是指向当前调用connect方法的对象,也就是 $db吗???
// 问2: mysql_connect($dbhost, $dbuser, $dbpw, 1) -创建了一个与数据库的链接?
// 问3: $this->link = @mysql_connect($dbhost, $dbuser, $dbpw, 1) 将与数据库的链接传递给当前对象的link?
// 问4: if(...) 行的意思是,判断 $this->link 是否获取到了与数据库的连接。
if(!$this->link = @mysql_connect($dbhost, $dbuser, $dbpw, 1)) {
//返回false 的话,继续执行
//问5:这行是赋值?并且输出字符串?
$halt && $this->halt('Can not connect to MySQL server');
}
}
//问6:判断php的版本,大于4.1则继续执行其中的代码?
if($this->version() > '4.1') {
//问7:以下各行不知道是什么意思,请大家给说明一下?
global $charset, $dbcharset;
//问8:???
if(!$dbcharset && in_array(strtolower($charset), array('gbk', 'big5', 'utf-8'))) {
$dbcharset = str_replace('-', '', $charset);
}
if($dbcharset) {
//问9:???
@mysql_query("SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary", $this->link);
}
if($this->version() > '5.0.1') {
//问10:???
@mysql_query("SET sql_mode=''", $this->link);
}
}
if($dbname) {
//问11:???
@mysql_select_db($dbname, $this->link);
}
}
}//问题 12 :实例化的时候,dbstuff后面不用加 () 么?
$db = new dbstuff;
//问题 13 :定义 connect()中的参数是6个,调用的时候多出一个,php允许这样?
$db->connect($server,$db_username,$db_password,$db_name, $pconnect,true,"GBK");
//定义:
$server = "localhost"; // 数据库服务器,一般为“localhost”
$db_username = "root"; // MySQL 用户名
$db_password = "123456"; // MySQL 用户密码
$db_name = "test"; // 数据库名称
$pconnect = 0; // 数据库持久连接 0=关闭, 1=打开class dbstuff {
function connect($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $halt = TRUE) {
if($pconnect) {
if(!$this->link = @mysql_pconnect($dbhost, $dbuser, $dbpw)) {
$halt && $this->halt('Can not connect to MySQL server');
}
} else { //当$pconnect=0 会执行到 这里、
// 问1: $this 是指向当前调用connect方法的对象,也就是 $db吗???
// 问2: mysql_connect($dbhost, $dbuser, $dbpw, 1) -创建了一个与数据库的链接?
// 问3: $this->link = @mysql_connect($dbhost, $dbuser, $dbpw, 1) 将与数据库的链接传递给当前对象的link?
// 问4: if(...) 行的意思是,判断 $this->link 是否获取到了与数据库的连接。
if(!$this->link = @mysql_connect($dbhost, $dbuser, $dbpw, 1)) {
//返回false 的话,继续执行
//问5:这行是赋值?并且输出字符串?
$halt && $this->halt('Can not connect to MySQL server');
}
}
//问6:判断php的版本,大于4.1则继续执行其中的代码?
if($this->version() > '4.1') {
//问7:以下各行不知道是什么意思,请大家给说明一下?
global $charset, $dbcharset;
//问8:???
if(!$dbcharset && in_array(strtolower($charset), array('gbk', 'big5', 'utf-8'))) {
$dbcharset = str_replace('-', '', $charset);
}
if($dbcharset) {
//问9:???
@mysql_query("SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary", $this->link);
}
if($this->version() > '5.0.1') {
//问10:???
@mysql_query("SET sql_mode=''", $this->link);
}
}
if($dbname) {
//问11:???
@mysql_select_db($dbname, $this->link);
}
}
}//问题 12 :实例化的时候,dbstuff后面不用加 () 么?
$db = new dbstuff;
//问题 13 :定义 connect()中的参数是6个,调用的时候多出一个,php允许这样?
$db->connect($server,$db_username,$db_password,$db_name, $pconnect,true,"GBK");
当然不同版本的编译器给出的答案可能有出入
function halt($message = '', $sql = '') { define('CACHE_FORBIDDEN', TRUE);
include('db_mysql_error.inc.php');
}这行还是不能理解。
$halt && $this->halt('Can not connect to MySQL server'); $halt 是传递进来的参数,还是 那个方法? 还是赋值行为么?
$this->halt('Can not connect to MySQL server'); 应该是调用 方法halt
&& 不是个 逻辑关系运算符么,php中这样用时什么意思??
$halt && $this->halt('Can not connect to MySQL server');这其实是个编程技巧而已
$halt 如果为 true 则 还需要执行 && 后的 $this->halt这就有个条件判断了
其实相当于if($halt){$this->halt.....}
...
$halt && $this->halt('Can not connect to MySQL server');
...
}
function halt($message = '', $sql = '') {
define('CACHE_FORBIDDEN', TRUE);
include('db_mysql_error.inc.php');
}
$this->halt('Can not connect to MySQL server'); 被执行的条件是,传入的属性 $halt 为真
用于当发生错误时,提供相应的错误说明