fetch() and fetch1() are functions commonly used in the secondary development of Imperial CMS. The following introduces the correct writing methods and some uses of fetch() and fetch1():
( Note: The fetch() and fetch1() functions are located in the e/class/db_sql.php file)
1.fetch()
Generally we use it to loop out lists or columns Multiple pieces of information are output; for example, the following example obtains all member IDs and user names whose member group ID is 1; the parameter of fetch() is the result of the SQL statement execution, that is, query() is executed first; and then the execution result of query() is Used as a parameter for fetch();
The code is as follows:
query( "select userid,username from {$dbtbpre}enewsmember where groupid=1" ); while ( $r = $empire ->fetch( $sql )){ echo $r [userid]. '---' . $r [username].' '; } db_close(); $empire =null;
It is recommended to study "Empirecms Tutorial"
2.fetch1()
Simply put, we only use it when querying a piece of information, such as obtaining member information with USERID 1; the difference from fetch() is that the parameter of fetch1() is a SQL statement rather than the execution result, so in the SQL statement Just go in directly without using it a second time; fetch1() only takes one piece of data;
The code is as follows:
fetch1("select userid,username from {$dbtbpre}enewsmember where userid=1 limit 1"); echo $r[userid].' '; echo $r[username].' '; db_close(); $empire=null;
Let’s discuss it further:
1. When fetching a piece of information, both fetch() and fetch1() are available. The code is as follows:
The code is as follows:
fetch1("select id,title from {$dbtbpre}ecms_news where classid=34"); print_r($r1); echo '<hr>'; $sql=$empire->query("select id,title from {$dbtbpre}ecms_news where classid=34"); $r=$empire->fetch($sql); print_r($r); echo '<hr>'; db_close(); $empire=null;
2. If you want to use fech1() to loop the data, you You can test the following code, and you will find that the result is miserable, an endless loop, so close the browser quickly;
The code is as follows:
fetch1("select id,title from {$dbtbpre}ecms_news where classid=34")){ echo $r1[title]; } db_close(); $empire=null;
3.fetch() is the same dead-end loop writing method ;
The code is as follows:
query("select id,title from {$dbtbpre}ecms_news where classid=341"); $r=$empire->fetch($sql); while($r)){ echo $r[title].' '; } db_close(); $empire=null;
4.Why. . . ;trylife once said that there is no truth without code, so let’s take a look at the content in the source file: Location: e/class/db_sql.php
The code is as follows:
//执行mysql_fetch_array() function fetch($sql)//此方法的参数是$sql就是sql语句执行结果 { $this->r=mysql_fetch_array($sql); return $this->r; } //执行fetch1(mysql_fetch_array()) //此方法与fetch()的区别是:1、此方法的参数是$query就是sql语句 //2、此方法用于while(),for()数据库指针不会自动下移,而fetch()可以自动下移。 function fetch1($query) { $this->sql=$this->query($query); $this->r=mysql_fetch_array($this->sql); return $this->r; }
①.See fetch1() There are more lines in the function body than fetch(), "$this->sql=$this->query($query);"; fetch1() executes query() first; so when getting a line of information, just fetch1 directly (), type less code;
②. The infinite loops in 3 and 4 above are PHP writing problems. The while($r=$empire->fetch($query)) function first fetches the query results The first line of content, after which the record pointer automatically moves to the next line; Note: mysql_fetch_array only obtains the first line of data in the query result; mysql_fetch_array() that is not written in the while() brackets can only read the first line of data. , so it’s an infinite loop.
The above is the detailed content of Complete the usage of fetch() and fetch1() in the secondary development of Empire CMS in 10 minutes. For more information, please follow other related articles on the PHP Chinese website!