Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-SQL脚本创建者_Php_Mysql_Sql_Performance_Function - Fatal编程技术网

PHP-SQL脚本创建者

PHP-SQL脚本创建者,php,mysql,sql,performance,function,Php,Mysql,Sql,Performance,Function,我需要什么: 一个高效的SQL脚本生成器来替换下面的脚本生成器 背景。 这是一个非常简单的程序,但我需要一种更有效的方法来生成它,我之所以编写这段代码,是因为我需要其他开发人员能够在我的平台和数据库表上创建“模块”,但我阻止他们完全访问核心数据库,他们必须使用我的$api->database->access层来访问他们的表/数据。它会阻止对我程序核心部分的任何请求 下面是我希望如何使用这些函数来构建SQLCREATETABLE脚本。 SqlField类/函数只返回传递的值的平面数组,并没有什么特

我需要什么:

一个高效的SQL脚本生成器来替换下面的脚本生成器

背景。

这是一个非常简单的程序,但我需要一种更有效的方法来生成它,我之所以编写这段代码,是因为我需要其他开发人员能够在我的平台和数据库表上创建“模块”,但我阻止他们完全访问核心数据库,他们必须使用我的$api->database->access层来访问他们的表/数据。它会阻止对我程序核心部分的任何请求

下面是我希望如何使用这些函数来构建SQLCREATETABLE脚本。 SqlField类/函数只返回传递的值的平面数组,并没有什么特别的

//The structure of the params are..

//$fields[] = SqlField::create($f_name, $f_type, $null, $auto_inc, $is_pk, $is_unique);
$fields[] = SqlField::create('id', 'int(7)', 0, 1, 1, 1);

$sql = $sqlTable->createTable('MyTableName', $fields );
下面是我很快编写的当前函数,但它很快变得混乱,而且还不完整

public function createTable($tableName, $fields = array()) {

    $sql="CREATE TABLE xmod_".$tableName." ( \r\n";
        $isinit = true;

        foreach($fields as $field) {

            $sql .= ($isinit)? "" : ", \r\n" ;

            $isinit = false;

            $sql .= "".$field[0]." ".$field[1]." ";

            if($field[2] == true) {
                $sql .= "NOT NULL ";
            }

            if($field[3] == true) {
                $sql .= "auto_increment ";
            }   



        }

        $isinit = true;

        //Work on the primary keys
        foreach($fields as $field) {



            if($field[4] == 1) {

                $sql .= ($isinit)? "" : ", \r\n" ;
                $isinit = false;

                $sql .= "PRIMARY KEY (".$field[0].")";
            }

        }

        $isinit = true;

        //Work on the unique fields
        foreach($fields as $field) {

            if($field[5] == 1) {

                $sql .= ($isinit)? "" : ", \r\n" ;
                $isinit = false;

                $sql .= "UNIQUE id (".$field[0].")";
            }


        }           

        $sql .= "\r\n )";


        return $sql;



}

虽然我自己还没试过,但CodeIgniter提供了类似的功能


(摘自评论)

因此,这里不是人们为您编写代码的地方,而是询问特定编程问题的地方。公平地说,是否有一个SQL类可以做类似的事情,尽管我自己没有尝试过,但CodeIgniter提供了类似的东西。谢谢danneth,这基本上就是我想要的,我会研究它并学习新的东西@IEnumerable:我的回答是,如果你对它作为一种解决方案感到满意,你可以接受。担心它花了这么长时间,出去吃饭,CodeIgniter很棒,我听说过它,但从未使用过。我一定会检查它的代码,因为那里有一些非常酷的东西。不用担心。我是CodeIgniter的忠实粉丝,过去几年它让我的生活轻松了很多。