How to use fetch() and fetch1() in the secondary development of Empire CMS?
fetch() and fetch1() is a function commonly used in the secondary development of Imperial CMS. The correct writing method and some uses of fetch() and fetch1() are introduced below:
(Note: The fetch() and fetch1() functions are located in e/ class/db_sql.php file)
1.fetch()
Generally we use it to loop out the list or list multiple pieces of information; for example, the following example obtains the member group ID All member IDs and user names that are 1; the parameters of fetch() are the results of SQL statement execution, that is, query() is executed first; and then the execution results of query() are used as parameters 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;
2.fetch1()
Simply put, we only use it when querying a piece of information, such as getting the member information with USERID 1; The difference from fetch() is that the parameters of fetch1() are SQL statements rather than execution results, so just go in directly without using the SQL statement for the 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 further:
1. When fetching a piece of information, both fetch() and fetch1() are Yes, 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 data, you can test the following code, you will I found that the result was tragic, an infinite loop, so I quickly closed the browser;
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 there is an endless loop of birds!
The above is the detailed content of How to use fetch() and fetch1() in the secondary development of Imperial CMS. For more information, please follow other related articles on the PHP Chinese website!