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"}