首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL SELECT COUNT rawQuery with PHP-MySQLi-Database-Class

SQL SELECT COUNT rawQuery with PHP-MySQLi-Database-Class
EN

Stack Overflow用户
提问于 2015-03-11 03:32:06
回答 1查看 1.2K关注 0票数 0

我在这里使用mysqli类:https://github.com/joshcam/PHP-MySQLi-Database-Class

...and在这个原始查询中遇到了问题:

代码语言:javascript
复制
    $q = mysql_query("SELECT id, value, (
                              SELECT COUNT( * ) 
                              FROM ".$dbprefix."pages
                              WHERE roles = ".$dbprefix."roles.id
                             )count
                             FROM '".$dbprefix."roles' ORDER by id ASC");
    $result = $db->rawQuery ($q);

它不工作,我在MysqliDb.php的第776行得到一个致命的错误准备查询- mysql查询本身工作,但当我将它与mysqli类一起使用时,它不工作。我相信这跟计数(*)或者有条纹的标签或者...某物。我试过几种方法,但还是坚持了下来。也许我不是唯一一个有这个问题的人--也许有人可以帮助你?这将是伟大的!谢谢你的建议!

EN

回答 1

Stack Overflow用户

发布于 2015-03-11 03:52:38

由于您使用的是PHP-MySQLi-Database-Class,因此不需要手动处理表前缀-只需使用$db->setPrefix(...)进行设置。

那就不要做mysql_query(...) (它已经被弃用了!)当您选择的库直接执行此操作时。rawQuery()正在查找带有SQL查询的字符串,而不是mysql_query()返回的语句。

最后,尽可能避免子查询并替换为各种类型的JOIN -更好的性能和更好的可读性。一般来说,人们过度使用子查询-养成了一种习惯,每当你被子查询诱惑时,都会尝试找出一个JOIN解决方案。有时您必须使用子查询,但大多数情况下不...

代码语言:javascript
复制
$db->setPrefix ($dbprefix);

$sql = "SELECT id, value, COUNT(pages.roles) AS c
        FROM roles
        LEFT JOIN pages ON pages.roles = roles.id
        ORDER by id ASC"
$result = $db->rawQuery($sql);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28972512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档