table_exists() 方法可能无法正常工作

2024-03-29

我开始使用 codeigniter 2.1.0 编写一个简单的模型类。我现在想要它做的就是创建和删除它所代表的 MySQL 表。这是代码:

<?php

    class Users_model extends CI_Model {

        public function createTable(){

            if( $this->db->table_exists('users') == FALSE ){

                $query = "CREATE TABLE users(
                        id SERIAL PRIMARY KEY,
                        email  VARCHAR(52) NOT NULL check(email <> ''),
                        UNIQUE (email)
                        )ENGINE = InnoDB;";

                $this->db->query($query);

            }

        }

        public function deleteTable(){

            if( $this->db->table_exists('users') ){

                $query = "DROP TABLE users;";

                $this->db->query($query);

            } else {

                echo "users not found <br />";

                $tables = $this->db->list_tables();
                foreach ($tables as $table)
                {
                    echo $table."<br />";
                }
            }

        }


    }

?>

这是我在主类中执行的代码:

$this->load->model('users_model');
$this->users_model->deleteTable();
$this->users_model->createTable(); 

第一次运行很好而且花花公子。表格创建得很好。但是,当我再次运行它时,我得到输出:

users not found
users

经过进一步检查我意识到table_exists()一去不复返TRUE. var_dump($this->db->table_exists('users'));回报bool(false).

那么,我做错了什么吗?这个很简单,直接复制粘贴即可文档 http://codeigniter.com/user_guide/database/table_data.html。 Google 不会返回任何相关内容,作为一名 C 程序员,我的心态始终是“如果有错误,那就是你的错误。(理查德·斯托曼永远不会错)”……但由于斯托曼先生与此无关,因此一个潜在可能。

TL;DR

为什么table_exists('users')上面的代码永远不会返回TRUE即使list_tables()确实返回“用户”;


尝试使用var_dump()代替echo。布尔值不能很好地工作echo.

var_dump( $this->db->table_exists('users') );

The 源代码 https://github.com/EllisLab/CodeIgniter/blob/develop/system/database/DB_driver.php#L829 of table_exists看起来像这样:

function table_exists($table_name)
{
    return ( ! in_array($this->_protect_identifiers($table_name, TRUE, FALSE, FALSE), $this->list_tables())) ? FALSE : TRUE;
}

Update来自评论

如果你看一下_保护_标识符 https://github.com/EllisLab/CodeIgniter/blob/develop/system/database/DB_driver.php#L1351它确实将数据库名称添加到表名称中。但应该有一个 .之间db.table。也许你的数据库配置搞砸了?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

table_exists() 方法可能无法正常工作 的相关文章

  • 如何动态创建新属性

    如何从对象方法内的给定参数创建属性 class Foo public function createProperty var name val here how can I create a property named var name
  • 错误代码:1822(当数据类型匹配且具有复合键时)

    得到一个 错误代码 1822 添加外键约束失败 丢失的 引用表中约束 subject ibfk 1 的索引 注册 当尝试创建subject桌子 问题是 错误并没有出现在上一张表上student 数据类型相同 并且定义了主键 两者都会出现此错
  • 如何将值从 android 传递到 php Web 服务并检索它?

    我正在尝试将一个值传递给我的 php web 服务 我已经使用此代码来传递 名称 值 private class MyAsyncTask extends AsyncTask
  • 如何启用 php curl 以在 php cli 中使用

    我已经在没有服务器的情况下在我的计算机上安装了 php 并使用 cli 运行它 但未启用 php curl 我不知道如何执行此操作 如果有人遇到此线程并使用 wamp 服务器 这里有一个针对上述问题的快速解决方案http forum wam
  • PHP:将数组添加在一起

    有人可以帮我解释一下吗 我有两段代码 其中一个按我的预期工作 但另一个则不然 这有效 a array a gt 1 b gt 2 b array c gt 3 c a b print r c Output Array a gt 1 b gt
  • Codeigniter 分页:运行查询两次?

    我正在使用 codeigniter 和分页类 这是一个非常基本的问题 但我需要确保我没有遗漏任何东西 为了获得对从 MySQL 数据库获取结果进行分页所需的配置项 基本上需要运行查询两次 对吗 换句话说 您必须运行查询来确定记录总数 然后才
  • Zend Framework 2 在视图中显示视图

    我有两个模块管理和登录 我想在管理视图 index html 中显示登录视图 login phtml 我在管理模块indexAction控制器中有以下内容 public function indexAction login new Logi
  • laravel 5:找不到类“输入”

    In my routes php我有的文件 Route get function return view login Route get index function return view index Route get register
  • ORDER BY id 或 date_created 显示最新结果?

    我有一个表 实际上有几个 我想首先从中获取最新条目的结果 这是我的ORDER BY条款选项 date created INT 从不改变值 id 当然是INT AUTO INCRMENT 两列应同等地代表记录插入的顺序 我自然会使用date
  • SQLAlchemy+pymysql 错误:sqlalchemy.util.queue.Empty

    尝试使用 Eclispse 在 Ubuntu 上运行 Python 2 SQLAlchemy 0 8 和 MySQL5 2 但我不断收到以下错误 我使用 pymysql 实际上是 pymysql3 引擎 模块监视器 from sqlalch
  • php 删除特定文件夹及其所有内容

    我正在使用 php 删除包含已删除帖子图像的文件夹 我正在使用下面的代码 这是我在网上找到的并且做得很好 我想知道当一个文件夹中有其他文件夹时 如何只删除其中的特定文件夹 当我使用下面的代码时 如何才能做到这一点 使用 dev images
  • 使用 RMySQL 会干扰 RPostgreSQL

    我有一个 R 脚本 我想从 MySQL 数据库中提取一些数据 然后从 PostgreSQL 数据库中提取一些数据 但是 从 RMySQL 加载 MySQL 驱动程序会阻止我从以下位置加载 PostgreSQL 驱动程序 PostgreSQL
  • php循环中的ajax在按钮单击时执行操作

    所以我有一个 php 循环 我使用 jquery 滑动切换来隐藏 显示带有 sql 结果的表 目前该表仅使用 php 加载 但由于发生了很多事情 导致了一些加载问题 我需要使用滑动切换 btn 来触发 ajax 因此它仅在按下按钮时请求当前
  • PHP mysql_num_rows 死错误

    我想创建一个页面 用户可以在其中添加他们的信息 我已经创建了该页面 但我真正的问题是代码 我有一些问题 这部分代码
  • 如何对主索引重新编号

    我有一个简单的 MySQL 表 主索引 id 不是一一编号的 1 31 35 100 等 我希望它们的编号如 1 2 3 4 请告诉我该怎么做 我还想指出的是 我知道该操作可能产生的后果 但我只是想整理一下表格 我同意其他方法也可以 但我只
  • PHP:从 POP3 或 IMAP 下载传入电子邮件,解析它,并将其标记为服务器上的已读/删除

    我正在尝试将传入电子邮件添加到我的网络应用程序中 它是基于 CodeIgniter 和 PHP 构建的 据我所知 我还没有找到任何 CI 库来执行此操作 我想要做的是有一个控制器通过 POP3 或 IMAP 连接到我的邮箱 并检索消息 解析
  • PHP 对象创建和内存使用

    一个基本的虚拟类 class foo var bar 0 function foo function boo echo memory get usage echo n foo new foo echo memory get usage ec
  • PHP filesize() 适用于除一个文件之外的所有文件,给出 stat failed 错误

    我正在编写一个 PHP 页面 该页面通过抓取现有 HTML 页面来生成播客提要 一切正常 但我的 mp3 文件之一出现 filesize stat failed 错误 据我所知 该文件没有损坏 并且播放得很好 我还将文件重新上传到服务器 它
  • 在php中获取真实IP的问题

    我用它来获取真实IP 但我从 SERVER HTTP CLIENT IP 我仅从 SERVER REMOTE ADDR 但是我不需要代理的IP 我需要使用某些内网的计算机的真实IP 我能得到它吗 什么时候 SERVER HTTP CLIEN
  • PHP 内置函数复杂性(isAnagramOfPalindrome 函数)

    我在过去的两个小时里一直在谷歌搜索 但找不到 php 内置函数时间和空间复杂度的列表 我有回文字谜 https stackoverflow com questions 4628386 what is the best algorithm t

随机推荐

  • 字体和颜色 - #region

    是否可以更改 region 和 endregion 的字体颜色 我在以下位置找不到这个元素extras options fonts and colors 它在这里 TOOLS gt Options gt Environment gt Fon
  • csv-parse 解析的对象的第一个属性不可访问

    我正在使用以下内容解析 csv 文件csv 解析 https csv js org parse userID sysID 20 50 30 71 但是 在返回的对象上 无法访问从第一列创建的属性userID 这是我的代码 async fun
  • 改造:将对象列表反序列化为不同类型

    开发 Android 应用程序 我正在使用改造来得到我的回应 目前我已经制作了一个 POJO 模型类 其中包含所有类型的字段 实际上它们有更多的字段和自己的方法 所以我在这里简化了它们很多 代码来自Client class OkHttpCl
  • 使用 R TM 包查找 2 和 3 个单词短语

    我正在尝试找到一个代码 该代码实际上可以在 R 文本挖掘包中找到最常用的两个和三个单词短语 也许还有另一个我不知道的包 我一直在尝试使用标记器 但似乎没有运气 如果您过去处理过类似的情况 您可以发布经过测试且实际有效的代码吗 太感谢了 您可
  • 1.9.1 的 ruby​​ ping

    我想在我的 ruby 代码中 ping 一个站点 发现 net ping 是一个很好的库 不幸的是 当我尝试 gem install net ping 时 出现以下错误 C gt gem 安装 net ping错误 安装 net ping
  • MVVM 符合 WPF 应用程序中的本地化

    如何使用 MVVM 模式本地化 WPF 应用程序 我真的很想以 正确 的方式去做 我当前的方法是使用 resx 资源文件来本地化我的应用程序 我将它们包含在我的 xaml 代码中 xmlns localization clr namespa
  • asp.net 网站中的 Quartz.net 设置

    我刚刚将quartz net dll 添加到我的bin 中并启动了我的示例 如何使用基于时间的quartz net 调用C 方法 using System using System Collections Generic using Sys
  • 开始后取消/停止 jquery fadeOut

    我有一个非常简单的页面 当用户单击页面上的特定条目时 该页面会显示状态更新 这一切工作正常 第一次点击更新id sts 如果输出正确 6 秒后这种现象就会消失 然而 虽然它会淡出 但如果用户单击另一个链接 DIV 会使用新文本进行更新 但它
  • Symfony2 动态/依赖形式

    我有一个包含 3 个依赖字段的表单 制造商 gt 制造商产品组 gt 制造商产品系列 所以我想选择一个制造商 基于制造商的产品组和基于产品组的产品系列 有一个 CookBook Entry 关于如何处理此类动态表单 它很容易为Manufac
  • 手动滚动到锚点时更改 url?

    默认情况下 如果我的网站中有锚点 则当我单击链接 即 www mysite com anchor 时 地址栏上的 URL 会发生更改 当我滚动到某个锚点时 是否可以立即更改地址栏中的 URL 或者有一个包含多个锚点的长文档 当我点击新的锚点
  • 分裂蜂群图

    如何按组分割蜂群图 类似于 使用 ggplot2 分割小提琴图 https stackoverflow com questions 35717353 split violin plot with ggplot2 但我想得到的不是密度图 而是
  • 全屏模式下的 ChromeDriver

    我正在尝试将 F11 发送到 ChromeDriver 但它没有响应 当我按 F11 时 Chrome 就会进入全屏模式 当我通过 ChromeDriver 发送 F11 时 却没有 这对于 ChromeDriver 中的任何 F 键都是相
  • 字典 <> 中的条目有限制吗?

    我有大约 3000 个不同的文件需要在游戏过程中的不同时间进行组织和检索 我创建了自己的变量结构 我正在考虑创建一本 词典 在我的应用程序开始时 只需在游戏开始之前加载我的所有文件 我想知道性能 包含这么多条目的字典会导致我的应用程序变慢吗
  • 使用反射从 Visual Studio(32 位)中的 T4 模板中分析 64 位 DLL

    我想使用反射从 T4 模板中分析 DLL 以便我可以根据反射分析的结果生成代码 我知道 EnvDTE 将是一个更好的选择 但由于多种原因 这在我的情况下是不可能的 反射的问题是 DLL 是 64 位 DLL 如果我在 T4 模板中加载它 我
  • 新进程完成后保持控制台窗口打开

    我目前有一部分代码可以创建一个新进程并从 shell 执行它 Process p new Process p Start p WaitForExit 这使得窗口在进程运行时保持打开状态 这很棒 不过 我也想把窗户打开after完成查看潜在消
  • 如何编写一个 C 程序来执行另一个程序?

    在linux中 我想编写一个启动另一个程序的C程序 当程序运行时 shell 将等待您输入您在程序中定义的命令 该命令将启动第二个程序 例如 假设在与调用程序相同的目录中有一个名为 hello 的简单 C 程序 hello 程序打印输出 h
  • 为什么使用 libnfc 和 PN532 SHIELD 时“找不到 NFC 设备”

    我在 ArchLinux 上安装了 libnfc 并通过我的 Adafruit PN532 arduino SHIELD 使用它 nfc list返回消息 未找到 NFC 设备 我在 etc nfc devices d pn532 conf
  • 连接到上游时没有实时上游,但上游正常

    我对 NGINX 有一个非常奇怪的问题 我有以下内容upstream conf文件 具有以下上游 upstream files 1 least conn check interval 5000 rise 3 fall 3 timeout 1
  • 即使启用了假脱机文件池,如何找到具有给定 ID 的作业的假脱机文件?

    我想将给定 Windows 打印作业的假脱机数据复制到磁盘上的任意位置 我有打印作业的作业 ID后台打印程序 API http msdn microsoft com en us library windows desktop dd16286
  • table_exists() 方法可能无法正常工作

    我开始使用 codeigniter 2 1 0 编写一个简单的模型类 我现在想要它做的就是创建和删除它所代表的 MySQL 表 这是代码