程序中有这么一段:
fuction user($userid =0){
if ($userid) {
$tepsql = tep_db_query("select * from user where userid = '$userid'");
if ($res = tep_db_fetch_array($tepsql)){
foreach ($res as $key =>$value){
$this->$key = $value;
}
}
}else {
$this->userid = 0;
}
}
其中的tep_db_query函数对mysql_query函数进行了包装:
function tep_db_query($query,$link ='db_link'){
global $$link; //动态变量,所谓动态变量,是指把一个变量的值作为另一个变量的变量名.
if (defined ('STORE_DB_TRANSACTIONS') && (STOR_DB_TRANSACTIONS =='true') {//defined 一般用作检查是否已经设置此变量,define设置一个变量.
error_log('QUERY'.$query."/n",3,STORE_PAGE_PARSE_TIME_LOG);//error_log函数,发送一个错误信息到web服务器的错误日志,一个tcp的端口或是一个文件.
//bool error_log(string message [,int message_type [,string destination [ ,string extra_headers]]])
//第一个参数message是消息内容,第二个他一type是参数的类型,第三个是目标文件,第四个是其他的头信息,其实一般第四个参数用不到,我们看第二个参数type,包括0,1,2,3等四种类型,0是默认类型,四个类型的作用:
//0,信心内容发送到php的系统日志记录,使用操作系统的日志记录机制或一个文件,取决于php.ini中的配置项error_log的内容,这个是缺省选项.
//1,把信息发送到一个邮件地址,第三个参数就是一个邮件地址,
//2,消息通过php的调试服务器远程的写入某个php调试服务器上,当然,php在编辑的时候 --enable-debugger必须打开,
//3,消息作为一个新行附加在目标文件当中,
//相关error_log的详细介绍:http://blog.csdn.net/heiyeshuwu/archive/2006/01/13/577838.aspx
}
$result = mysql_query($query,$$link) or tep_db_error($query,mysql_error(),my_error());
//这个mysql_query返回的是一个表,然后在通过mysql_fetch_array()返回每一行的东西,这两个函数返回的类型都是数组,一个是二维的,一个是一维的,所以可以用类似temp['key']这样的操作
if(defined('STORE_DB_TRANSACTIONS')&& (STORE_DB_TRANSACTIONS == 'true')){
$result_error = mysql_error();//mysql_error()返回上一个mysql操作产生的文本错误信息:http://www.linuxbyte.net/linuxdoc/phpdoc-zh/functon.mysql-error.html
error_log('RESULT'.$result.' '.$result_error . "/n",3,STORE_PAGE_PARSE_TIME_LOG);
}
return $result;
}
if ($res = tep_db_fetch_array($tepsql)){
foreach ($res as $key =>$value){
$this->$key = $value;
}
这段中的$res as $key =>$value是用来访问一个关联数组(这个东东相当于python或java中的dict类型的概念)的,使用foreach语句循环处理一个关联数组,并访问他的下标和值,需要把foreach语句改成这样的形式:
foreach($student as key_name=>$new)
{
//do something.
}
注:要循环操作顺序索引的数组,可以使用count()函数来获取数组中的元素个数,然后使用一个for()循环.
同时,要循环操作非顺序索引的数组,可以使用current()函数以及key()函数,current函数用于确定数组当前的值 ,key函数用于确定当前元素的索引.
fuction user($userid =0){
if ($userid) {
$tepsql = tep_db_query("select * from user where userid = '$userid'");
if ($res = tep_db_fetch_array($tepsql)){
foreach ($res as $key =>$value){
$this->$key = $value;
}
}
}else {
$this->userid = 0;
}
}
其中的tep_db_query函数对mysql_query函数进行了包装:
function tep_db_query($query,$link ='db_link'){
global $$link; //动态变量,所谓动态变量,是指把一个变量的值作为另一个变量的变量名.
if (defined ('STORE_DB_TRANSACTIONS') && (STOR_DB_TRANSACTIONS =='true') {//defined 一般用作检查是否已经设置此变量,define设置一个变量.
error_log('QUERY'.$query."/n",3,STORE_PAGE_PARSE_TIME_LOG);//error_log函数,发送一个错误信息到web服务器的错误日志,一个tcp的端口或是一个文件.
//bool error_log(string message [,int message_type [,string destination [ ,string extra_headers]]])
//第一个参数message是消息内容,第二个他一type是参数的类型,第三个是目标文件,第四个是其他的头信息,其实一般第四个参数用不到,我们看第二个参数type,包括0,1,2,3等四种类型,0是默认类型,四个类型的作用:
//0,信心内容发送到php的系统日志记录,使用操作系统的日志记录机制或一个文件,取决于php.ini中的配置项error_log的内容,这个是缺省选项.
//1,把信息发送到一个邮件地址,第三个参数就是一个邮件地址,
//2,消息通过php的调试服务器远程的写入某个php调试服务器上,当然,php在编辑的时候 --enable-debugger必须打开,
//3,消息作为一个新行附加在目标文件当中,
//相关error_log的详细介绍:http://blog.csdn.net/heiyeshuwu/archive/2006/01/13/577838.aspx
}
$result = mysql_query($query,$$link) or tep_db_error($query,mysql_error(),my_error());
//这个mysql_query返回的是一个表,然后在通过mysql_fetch_array()返回每一行的东西,这两个函数返回的类型都是数组,一个是二维的,一个是一维的,所以可以用类似temp['key']这样的操作
if(defined('STORE_DB_TRANSACTIONS')&& (STORE_DB_TRANSACTIONS == 'true')){
$result_error = mysql_error();//mysql_error()返回上一个mysql操作产生的文本错误信息:http://www.linuxbyte.net/linuxdoc/phpdoc-zh/functon.mysql-error.html
error_log('RESULT'.$result.' '.$result_error . "/n",3,STORE_PAGE_PARSE_TIME_LOG);
}
return $result;
}
if ($res = tep_db_fetch_array($tepsql)){
foreach ($res as $key =>$value){
$this->$key = $value;
}
这段中的$res as $key =>$value是用来访问一个关联数组(这个东东相当于python或java中的dict类型的概念)的,使用foreach语句循环处理一个关联数组,并访问他的下标和值,需要把foreach语句改成这样的形式:
foreach($student as key_name=>$new)
{
//do something.
}
注:要循环操作顺序索引的数组,可以使用count()函数来获取数组中的元素个数,然后使用一个for()循环.
同时,要循环操作非顺序索引的数组,可以使用current()函数以及key()函数,current函数用于确定数组当前的值 ,key函数用于确定当前元素的索引.