麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > CMS > PhpCMS > 正文

PHPcmsv9 get標簽 sql語句limit無效及num和rows屬性無效問題解決辦

2024-09-10 07:16:09
字體:
來源:轉載
供稿:網友

PHPcmsv9 get標簽 sql語句limit無效及num和rows屬性無效問題解決辦法

PHPcmsv9 get標簽 sql語句limit無效及num和rows屬性無效問題很多朋友就直接百度了,但發現網上很多朋友也碰到此問題了,下文來給各位整理此問題解決方法.

PHPcms v9 get標簽sql語句limit無效及num和rows屬性無效問題至今也已經是一個老問題了,網絡上也有一些表面的解決辦法,但是逐日者并沒有找到從底層,層模板標簽解析及模板引擎代碼上真正解決此問題的辦法和解釋。今天在使用get標簽sql語句調用數據的時候當然也遇到了此問題,經過研究找到了問題的原因并且整理出本文希望對php愛好者有所幫助。

錯誤描述:我想從數據表中調取最新的6條數據,代碼如下:

  1. <dl class="about_text1"
  2.         <dt><img src="{get_memberavatar($m_info['userid'],1,45)}"  alt="" 
  3.   class="tupian"/> {$m_more['nick']}最新文章 
  4.         </dt> 
  5.  {pc:get sql="SELECT * FROM `cms_talkcar` a LEFT JOIN `cms_member` b  
  6. ON a.username=b.username LEFT JOIN `cms_member_detail` c ON b.userid=c.userid  
  7. WHERE a.catid=$catid AND status=99  and a.username='$username' ORDER BY //開源軟件:Vevb.com 
  8. inputtime DESC" num='8' } 
  9.    {loop $data $r
  10.      <dd><i></i><a href="{$r[url]}" title="" target="_blank">{$r[title]}</a></dd> 
  11.    {/loop} 
  12.  {/pc} 
  13.       </dl> 

但結果顯示的數量超過了6條,把數據庫中所有的10條數據都顯示了出來,這說明rows屬性無效.

后來對sql進行了更改:SELECT * FROM `cms_talkcar` a LEFT JOIN `cms_member` b ON a.username=b.username LEFT JOIN `cms_member_detail` c ON b.userid=c.userid WHERE a.catid=$catid AND status=99 and a.username='$username' ORDER BY inputtime DESC limit 0,8"結果系統報出如下sql語法錯誤:

PHPcmsv9 get標簽 sql語句limit無效及num和rows屬性無效問題解決辦法

很明顯,這是phpcms系統解析標簽的時候如果沒有獲得有效的指定數據條數的參數時會默認追加“limit 20”的限制量,現在看來簡單的在源sql語句上追加limit 8也是不行的.

逐日者也很快知道了指定數量用num屬性,但是正如網又們知道的,num屬性也無效(為什么num屬性是正確的指定數量的參數在后面的底層代碼講解中您將得到回答)。返回的仍然是系統默認追加的“limit 20”的限制。

如此說明,在解析源代碼地方出現了獲取num屬性值和判斷是否有此值是否要使用默認20的錯誤。

在下面先給出整理的網絡上的解決方法,然后再給大家講解怎樣去除源代碼上的錯誤來正常的使用num屬性指定獲取數據條數。

整理的網絡上的解決方案,來源phpcms官方論壇.

1.方法一,加入start屬性,比如:

{pc:get sql="SELECT title,url FROM v9_news where catid=9 and status=99 order by updatetime desc" start="0" num="4" return="v"}

可以加入start 和 num 來控制,這樣就獲得0到4的數據.

2.方法二(比較絕的方法),加入--將系統自動加上的limit 20注釋掉,代碼如下:

{pc:get sql="SELECT title,url FROM v9_news where catid=9 and status=99 order by updatetime desc limit 0,4--" return="v"}

注意4后面的兩個減號,把v9自帶的LIMIT 0,20語句給注釋了,這樣就不會和你加入的limit 0,4沖突了.

注意4后面的兩個減號,把v9自帶的LIMIT 0,20語句給注釋了!這樣就不會和你加入的limit 0,4沖突了.

逐日者給出的層底層去掉源代碼錯誤的辦法,只要改一行代碼哦,在/phpcms/libs/classes/template_cache.class.php模板解析緩存文件中找到pc_tag()方法,大約在115行左右,然后在如下代碼:

131 $str = '';

132 $num = isset($num) && intval($num) ? intval($num) : 20;

第131行和第132行之間插入一句,如下:

  1. 131 $str = ''
  2. 132 $num = eval("return ".$num.";");//插入語句 
  3. 133 $num = isset($num) && intval($num) ? intval($num) : 20; 

這樣,大功告成,在后臺更新一下緩存,然后測試一下,get標簽中num屬性指定數據數量就可以用了.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成人在线观看网 | 最新午夜综合福利视频 | 精品亚洲一区二区三区 | 色的综合 | 九艹在线 | 午夜视频在线观 | 视频一区国产精品 | 日本精品免费观看 | 国产亚洲精品美女久久久 | 亚洲午夜不卡 | 国产精品亚洲综合 | 成人福利视频网站 | 欧美一级做一级爱a做片性 久久久资源网 | 久久久国产一级片 | 亚洲最新色 | 麻豆视频在线免费观看 | 久久精品一区二区三区四区五区 | 国产在线色 | 成人在线视频播放 | 成年免费视频黄网站在线观看 | 国产99久久精品一区二区300 | 一级黄色毛片免费 | 在线观看国产一区二区三区 | 一级做受毛片免费大片 | 日韩电影一区二区三区 | 国产免费久久久久 | 日韩欧美电影在线观看 | 国产精品一区二区三区在线看 | 免费中文视频 | 免费视频99| 精品国产乱码久久久久久丨区2区 | 一级电影在线观看 | 黄色网址在线免费播放 | 日韩电影一区二区三区 | 污视频在线看 | 久久久久久久免费精品 | av电影免费在线 | 久久爽久久爽久久av东京爽 | 精品久久久久久综合日本 | 国产人成免费爽爽爽视频 | 在线观看免费视频麻豆 |