登录
首页 >  数据库 >  MySQL

[经验栈]SQL语句逻辑运算符"AND"、"&&"兼容性

来源:SegmentFault

时间:2023-02-24 19:02:13 489浏览 收藏

本篇文章给大家分享《[经验栈]SQL语句逻辑运算符"AND"、"&&"兼容性》,覆盖了数据库的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

最近打算把博客转移到typecho平台,选了一个风格个人比较喜欢的主题,即Akina for Typecho 主题模板,在这里先感谢题主的开源分享,但是在使用过程中一开始就出现“500 Database Query Error”问题。

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" 

看到这里我才发现我用的是SQLITE数据库,在SQLITE数据库里是不支持"&&"做逻辑与运算符的,通过将"Akina/index.php"文件以下代码中的"&&"改为"AND"后重新加载页面,错误消失,打开页面正常。

$select2 = $this->select()->where('type = ? && status = ? && created orWhere('authorId = ? && status = ?',$uid,'private');

最后我对MYSQL、SQL Server、SQLite数据库进行实验后,只有MYSQL数据库支持"&&",三者都能支持"AND",所以在写SQL语句中我们尽量采用标准的"AND"作为逻辑与运算符。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于数据库的相关知识,也可关注golang学习网公众号。

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>