Codeigniter pyrocms中存在问题选项卡

Codeigniter pyrocms中存在问题选项卡,codeigniter,activerecord,pyrocms,Codeigniter,Activerecord,Pyrocms,我正在为我的web应用程序使用pyrocms。 我想在插件中为我的模块创建库。 当我在数据库中为tabel-llist使用此代码时 $CI = & get_instance(); $all=$CI->db->list_tables(); 我在$all数组中有“defualt\u products”值。这意味着我的数据库中有“default_products”表。但当我使用下一个代码时,结果是错误的。为什么? if(!$CI->db->table_exists("

我正在为我的web应用程序使用pyrocms。
我想在插件中为我的模块创建库。
当我在数据库中为tabel-llist使用此代码时

$CI = & get_instance();
$all=$CI->db->list_tables();
我在
$all
数组中有“defualt\u products”值。这意味着我的数据库中有“default_products”表。但当我使用下一个代码时,结果是错误的。为什么?

if(!$CI->db->table_exists("default_products"))
    return false;

我使用pyrocms 2.2。

您没有将任何内容传递给表。\u。它怎么知道您要检查哪张表?它需要一个参数…您正在检查的表名

因此,如果您这样做了,并且存在一个名为“tablename”的表,那么您仍然会得到false,因为如果该表确实存在,table_exists将返回TRUE

if ($CI->db->table_exists('tablename')
{
return FALSE;
}

您可以使用
dbprefix
方法包含
database.php
config文件中的表前缀:

if ( !$CI->db->table_exists($CI->db->dbprefix('products')) ){
   //there is no such table, products
   echo "there is no table named ".$CI->db->dbprefix('products');
   die();
}else{
   //table found
   echo "table found"; die();
}

如果它不起作用,那么我认为你的问题不是这段代码

对不起。谢谢你的领导。我纠正我的问题。我的代码是正确的,但我没有正确地编写问题。如果该表存在,它仍将返回FALSE,因为您的表达式的计算结果为TRUE。您说的是“如果此表存在,则返回false”…因此它正在工作。如果希望它返回TRUE…请将返回值更改为TRUE…或使用“!”对表达式求反
如果(!$CI->db->table_存在('default_products'))
您的问题解决了吗?不,我仍然有问题,我会对所有没有前缀的表进行测试,但是那些以“default_”开头的表不能正确运行。