phpcms的使用:get标签的sql语句中,如何使用变量

get标签sql语句中如何使用变量?

网上百度,都是静态的sql写法。如何给sql语句中,加入动态的变量呢?

测试1---失败

 {pc:get sql="SELECT * from v9_news where status=99 and chengshi='{$chengshi}' and catid in(274,280,286)  order by id DESC" num="7" return="data"}
      //这种写法,读取不到。chengshi的值。
      //从phpcms的caches_templates里,可以看到对应的php模板文件,里面构造出来的查询语句,发现是chengshi=空值

百度一下,sql中如何使用变量

百度中得到的结果,使用@等等,那种方法,看着很恶心。

最终的解决方案

把使用的变量,全部都写在content模块的控制器,init方法里
同时,要注意,html文件中的写法,和控制器的写法不一样了。
注意的一些符号问题。最终写法是。

//SEO
		$SEO = seo($siteid);
		$sitelist  = getcache('sitelist','commons');
		$default_style = $sitelist[$siteid]['default_style'];
		$CATEGORYS = getcache('category_content_'.$siteid,'commons');
		//这里是新增的。新增城市编号和城市名字,以及城市拼音
		$chengshi=$_GET['chengshi'];
		$db = pc_base::load_model('city_model'); 
		$_r = $db->get_one(array('id'=>$chengshi)); 
		$cityname = $_r['name'];
		$cityurl=$_r['pinyin'];
                  // 写在模板调用之前,为了所有的模板,都可以使用这些变量
		include template('content','index',$default_style);

这种方法是可以,但是,在模板中,数据一直是静态的,改变不了。怎么办?

原来是判断城市入口以后,做了一个chengshi的重新赋。写死了。
去掉那个写死的判断就好了。

pc两种标签的写法不一样

//pc get中的sql中的where使用变量
	{php $where = "status=99 and find_in_set('$chengshi', chengshi) and catid in(274,280,286) "}
	 {pc:get sql="SELECT * from v9_news where $where order by id DESC" num="7" return="data"}
//pc content里中的where使用变量
      {php $where = "zhiding=1 and find_in_set('$chengshi', chengshi)"}
      {pc:content action="lists" catid="265"  where="$where"   siteid="1"  num="1"  order="inputtime desc"}
原文地址:https://www.cnblogs.com/cn-oldboy/p/12879846.html