[经验栈]SQL语句逻辑运算符"AND"、"&&"兼容性
2024-08-27 21:47:41
最近打算把博客转移到typecho平台,选了一个风格个人比较喜欢的主题,即Akina for Typecho 主题模板,在这里先感谢题主的开源分享,但是在使用过程中一开始就出现“500 Database Query Error”问题。
在typecho的index.php文件最开始位置加入以下代码。
define('TYPECHO_DEBUG',true);
再次打开网页,查看网页源代码后发现如下错误提示:
SQLSTATE[HY000]: General error: 1 near "&": syntax error
Typecho_Db_Query_Exception: SQLSTATE[HY000]: General error: 1 near "&": syntax error in /www/users/root/WEB/var/Typecho/Db/Adapter/Pdo.php:105
Stack trace:
#0 /www/users/root/WEB/var/Typecho/Db.php(354): Typecho_Db_Adapter_Pdo->query('SELECT typecho_...', Object(PDO), 1, 'SELECT')
#1 /www/users/root/WEB/var/Typecho/Db.php(384): Typecho_Db->query(Object(Typecho_Db_Query), 1)
#2 /www/users/root/WEB/usr/themes/Akina/index.php(39): Typecho_Db->fetchAll(Object(Typecho_Db_Query))
#3 /www/users/root/WEB/var/Widget/Archive.php(2022): require_once('/www/users/root...')
#4 /www/users/root/WEB/var/Typecho/Router.php(138): Widget_Archive->render()
#5 /www/users/root/WEB/index.php(26): Typecho_Router::dispatch()
#6 {main}
通过查看错误代码可以看到错误发生在"Akina/index.php(39): Typecho_Db->fetchAll(Object(Typecho_Db_Query))"函数,通过打印传入参数fetchAll()可以看到是一个查询语句:
["where"]=>
string(176) " WHERE ("type" = #param:0 # && "status" = #param:1# && "created" < #param:2# ) AND (typecho_contents."cid" != #param:3# ) OR ("authorId" = #param:4# && "status" = #param:5# )"
看到这里我才发现我用的是SQLITE数据库,在SQLITE数据库里是不支持"&&"做逻辑与运算符的,通过将"Akina/index.php"文件以下代码中的"&&"改为"AND"后重新加载页面,错误消失,打开页面正常。
$select2 = $this->select()->where('type = ? && status = ? && created < ?', 'post','publish',time());
if($uid) $select2->orWhere('authorId = ? && status = ?',$uid,'private');
最后我对MYSQL、SQL Server、SQLite数据库进行实验后,只有MYSQL数据库支持"&&",三者都能支持"AND",所以在写SQL语句中我们尽量采用标准的"AND"作为逻辑与运算符。
最新文章
- 清除打印机队列中无法清除的任务 &; 清空打印池
- ThreadLocal内部机制及使用方法
- bzoj 3163: [Heoi2013]Eden的新背包问题
- OC中的@property详解
- 在64位SQL Server中创建Oracle的链接服务器
- NDK、SDK以及JNI的关系
- 工作流模式与K2实现- (1)
- ThinkPad告别蓝快,自己使用VHD安 WIN8.1并成功激活
- python selenium下载电子书
- <;a href=";onclick=";javascript:goSearch(this)"; class=";click"; name=";Java";>;Java<;/a>;为什么a标签的父节点获取不到
- Android SharedPreference最佳实践
- wefwewewe
- Java面试题04-final关键字详解
- PyCharm的注册码获取
- Unsafe 的简单使用
- scala调用Linux命令行
- php serialize(),unserialize()
- Confluence 6 使用一个主题到站点
- C#判断网站是否能访问或者宕机的方法
- uboot的静默编译、指定编译目录、多核编译
热门文章
- Unity进阶:用AssetBundle和Json做了一个玩家登陆界面
- linux 7忘记密码找回
- 设计模式(C#)——01单例模式
- JS-对象的深浅拷贝及其新增方法测试
- Leetcode之回溯法专题-37. 解数独(Sudoku Solver)
- JSON转换方法解析
- Beego orm 模型字段与数据库类型的对应
- STL 中priority_queue小结
- “玲珑杯”ACM比赛 Round #18 1147 - 最后你还是AK了(思维,边的贡献)
- hdu 4725 The Shortest Path in Nya Graph(建图+优先队列dijstra)