GVKun编程网logo

php-table_exists()方法可能无法正常工作(php无法实现的功能)

23

最近很多小伙伴都在问php-table_exists()方法可能无法正常工作和php无法实现的功能这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展Androiddrawableic

最近很多小伙伴都在问php-table_exists()方法可能无法正常工作php无法实现的功能这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展Android drawable ic_menu_star无法正常工作?、Android file.exists()无法正常工作、array_key_exists无法正常工作、Can''t create table ''table_name''; table exists - 如何解决MySQL报错:无法创建表,表已存在等相关知识,下面开始了哦!

本文目录一览:

php-table_exists()方法可能无法正常工作(php无法实现的功能)

php-table_exists()方法可能无法正常工作(php无法实现的功能)

我开始使用codeigniter 2.1.0编写一个简单的Model类.我现在想要它做的就是创建并删除它代表的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).

所以,我做错什么了吗?这很简单,从documentation复制粘贴.Google不返回任何相关内容,作为C程序员,我的心态始终是“如果有错误,那就是你的错误.(Richard Stallman永远不会错)”.但是,由于斯托曼先生与此无关,所以有可能.

TL; DR

为什么上面的代码中的table_exists(‘users’)永远不会返回TRUE,即使list_tables()确实返回了’users’;

解决方法:

尝试使用var_dump()代替echo.布尔值不适用于echo.

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

table_exists的source code看起来像这样:

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

来自评论的更新

如果您查看_protect_identifiers,则会将数据库名称添加到表名称中.但是应该有一个. db.table之间.也许您的数据库配置搞砸了?

Android drawable ic_menu_star无法正常工作?

Android drawable ic_menu_star无法正常工作?

我正在设计XML菜单:

    <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:icon="@android:drawable/ic_menu_preferences" android:title="@string/menu_preferences" android:id="@+id/menu_preferences"/>
    <item android:id="@+id/menu_bookmarks" android:title="@string/menu_bookmarks" android:icon="@android:drawable/ic_menu_star"></item>
    <item android:title="@string/menu_history" android:id="@+id/menu_history" android:icon="@android:drawable/ic_menu_recent_history"></item>
</menu>

当我尝试使用android画眉笔ic_menu_star时,我的日食抛出错误:

[2011-07-06 00:52:28 - Testapp] W/ResourceType( 1852): Bad XML block: header size 51 or total size 3342532 is larger than data size 0
[2011-07-06 00:52:28 - Testapp] C:\eclipseprojects\Testapp\res\menu\search_menu.xml:4: error: Error: Resource is not public. (at 'icon' with value '@android:drawable/ic_menu_star').

我已经检查了项目中的android资源,它就在其中。我在android 2.1框架上构建我的项目。这是一个错误吗?

Android file.exists()无法正常工作

Android file.exists()无法正常工作

哈o

这是一些将数据类写入文件的代码,然后检查该文件是否存在.我可以看到该文件存在于模拟器上,但是file.exists()并因此saveStateAvailable()返回false.

    private void saveStateFile() {
    /*DEBUG*/Log.d(this.getClass().getName(), "saveStateFile: Started");
    mGameData = getGameData();
        try {
            FileOutputStream fileoutputstream = openFileOutput(mGameData.pilotName + STATE_FILE_EXTENSION, Context.MODE_WORLD_WRITEABLE);
            ObjectOutputStream objectoutputstream;
            objectoutputstream = new ObjectOutputStream(fileoutputstream);
            objectoutputstream.writeObject(mGameData);
            objectoutputstream.close();
            fileoutputstream.close();
            /*DEBUG*/Log.i(this.getClass().getName(), "saveStateFile: State saved to "+mGameData.pilotName + STATE_FILE_EXTENSION);
        } catch (IOException e) {
            /*DEBUG*/Log.e(this.getClass().getName(), "saveStateFile: Error writing data state file, "+mGameData.pilotName + STATE_FILE_EXTENSION);
            e.printstacktrace();
        }
    /*DEBUG*/Log.d(this.getClass().getName(), "saveStateFile: Finished stateFileAvailable="+stateFileAvailable());
}
private boolean stateFileAvailable() {
    File file = new File(mGameData.pilotName + STATE_FILE_EXTENSION);
    /*DEBUG*/Log.d(this.getClass().getName(), "stateFileAvailable: Called ("+mGameData.pilotName + STATE_FILE_EXTENSION+" exists = "+file.exists()+")");
    return file.exists();
}

有任何想法吗?

-皱纹

解决方法:

您需要使用Context#getFileStreamPath(String),其中字符串是您尝试访问的File对象的文件名.然后,您可以在该对象上调用File#exists.所以:

File file = getFileStreamPath(mGameData.pilotName + STATE_FILE_EXTENSION);

使您可以访问File对象,该对象指向私有应用程序存储区域中的正确位置.

您的代码将要执行的操作是访问文件/<您的文件名>.在根路径上.您的文件显然不存在.

array_key_exists无法正常工作

array_key_exists无法正常工作

array_key_exists不适用于大型多维数组。对于前

$arr = array(
    '1' => 10,'2' => array(
        '21' => 21,'22' => 22,'23' => array(
            'test' => 100,'231' => 231
        ),),'3' => 30,'4' => 40
);

array_key_exists(’test’,$ arr)返回’false’,但它可以与一些简单的数组一起使用。

Can''t create table ''table_name''; table exists - 如何解决MySQL报错:无法创建表,表已存在

Can''t create table ''table_name''; table exists - 如何解决MySQL报错:无法创建表,表已存在

can\''t create table \''table_name\''; table exists - 如何解决mysql报错:无法创建表,表已存在

Can''t create table ''table_name''; table exists - 如何解决MySQL报错:无法创建表,表已存在,需要具体代码示例

MySQL是最常用的关系型数据库之一,具有广泛的应用。在使用MySQL时,有时会遇到报错信息:"Can''t create table ''table_name''; table exists",意思是无法创建表,因为表已经存在。这种错误信息通常出现在我们尝试创建一个已经存在的表时。本文将介绍如何解决这个问题,并提供相应的代码示例。

首先,让我们了解一下MySQL的CREATE TABLE语句的基本语法:

CREATE TABLE table_name (

column1 datatype constraints,
column2 datatype constraints,
...
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

);

其中,table_name是你要创建的表的名称,column1、column2等是表中的列,datetype是列的数据类型,而constraints是列的约束条件。

当我们执行CREATE TABLE语句时,MySQL会尝试创建一个新的表。如果指定的表名已经存在,MySQL将报错,并提示无法创建表,因为表已存在。

为了解决这个问题,我们可以使用以下两种方法之一:

方法一:删除已存在的表
在创建表之前,我们可以先检查表是否已经存在,然后再做相应的操作。若表存在,我们可以先删除它,然后再重新创建。

下面是一个示例代码:

DROP TABLE IF EXISTS table_name;
CREATE TABLE table_name (

column1 datatype constraints,
column2 datatype constraints,
...
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

);

在上面的代码中,我们首先使用DROP TABLE语句检查并删除已存在的表。如果表存在,则会被删除。接下来,我们使用CREATE TABLE语句创建一个新的表。

方法二:使用CREATE TABLE IF NOT EXISTS语句
CREATE TABLE IF NOT EXISTS是一个MySQL的扩展语句,它能够检查表是否存在。如果表不存在,它会创建一个新表;如果表已经存在,则不做任何操作。

下面是一个示例代码:

CREATE TABLE IF NOT EXISTS table_name (

column1 datatype constraints,
column2 datatype constraints,
...
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

);

上述代码中,我们使用了CREATE TABLE IF NOT EXISTS语句来创建一个新表。如果表已经存在,则不进行任何操作。

综上所述,解决MySQL报错:"Can''t create table ''table_name''; table exists",无法创建表因为表已经存在的问题,我们可以使用DELETE语句删除已存在的表,或者使用CREATE TABLE IF NOT EXISTS语句来判断表是否存在,并分别执行相应的操作。以下是一个完整的示例代码,演示了如何使用这两种方法:

方法一:删除已存在的表

DROP TABLE IF EXISTS table_name;
CREATE TABLE table_name (

column1 datatype constraints,
column2 datatype constraints,
...
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

);

方法二:使用CREATE TABLE IF NOT EXISTS语句

CREATE TABLE IF NOT EXISTS table_name (

column1 datatype constraints,
column2 datatype constraints,
...
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

);

无论你选择哪种方法,都可以解决MySQL报错:"Can''t create table ''table_name''; table exists"的问题。根据你的具体需求和数据情况,选择合适的方法来解决问题,并确保正确地创建表。

以上就是Can''t create table ''table_name''; table exists - 如何解决MySQL报错:无法创建表,表已存在的详细内容,更多请关注php中文网其它相关文章!

今天关于php-table_exists()方法可能无法正常工作php无法实现的功能的介绍到此结束,谢谢您的阅读,有关Android drawable ic_menu_star无法正常工作?、Android file.exists()无法正常工作、array_key_exists无法正常工作、Can''t create table ''table_name''; table exists - 如何解决MySQL报错:无法创建表,表已存在等更多相关知识的信息可以在本站进行查询。

本文标签: