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"}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通