TypechoJoeTheme

武小栈

武小栈

学习、记录、总结、分享

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

2019-09-07
/
6 评论
/
1,718 阅读
/
正在检测是否收录...
09/07

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

在typecho的index.php文件最开始位置加入以下代码。

      `define('__TYPECHO_DEBUG__',true);`   

再次打开网页,查看网页源代码后发现如下错误提示:

    <pre><code><h1>SQLSTATE[HY000]: General error: 1 near &quot;&amp;&quot;: syntax error</h1>Typecho_Db_Query_Exception: SQLSTATE[HY000]: General error: 1 near &quot;&amp;&quot;: 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-&gt;query('SELECT typecho_...', Object(PDO), 1, 'SELECT')
​    \#1 /www/users/root/WEB/var/Typecho/Db.php(384): Typecho_Db-&gt;query(Object(Typecho_Db_Query), 1)
​    \#2 /www/users/root/WEB/usr/themes/Akina/index.php(39): Typecho_Db-&gt;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-&gt;render()
​    \#5 /www/users/root/WEB/index.php(26): Typecho_Router::dispatch()
​    \#6 {main}</code></pre>

通过查看错误代码可以看到错误发生在"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"作为逻辑与运算符。

typechoC#sql
朗读
赞 · 1
版权属于:

武小栈

本文链接:

https://www.wulinn.com/experience/logicaloperatornorm.html(转载时请注明本文出处及文章链接)

评论 (6)
  1. 作者
    Windows 10 · QQ Browser

    看看

    2020-07-17 回复
  2. 作者
    Windows 10 · QQ Browser

    瞧瞧

    2020-07-17 回复
  3. 作者
    Windows 10 · QQ Browser

    +1

    2020-07-17 回复
  4. 作者
    Windows 10 · QQ Browser

    +1+1

    2020-07-17 回复
    1. 武小栈 作者
      Windows 10 · Google Chrome
      @清

      欢迎欢迎

      2020-07-17 回复
  5. Xunflash 作者
    Windows 10 · Google Chrome

    谢谢大佬,我看了好多教程,最后在博客园搜到了你这一篇和我博客症状一模一样的,终于把我博客置顶功能修好了,谢谢大佬

    2021-02-20 回复

最新回复

  1. Richard Wahl
    2021-05-10
  2. Xunflash
    2021-02-20
  3. Zack Mortensen
    2021-02-13
  4. Shawna Box
    2021-01-26
  5. 刘工
    2020-09-27