如何在PHP中使用数据库模式?

时间:2014-01-20 12:04:12

标签: php mysql global-variables database-schema

我正在编写一个供个人使用的小型PHP / MySQL应用程序。这是我第一次使用PHP,所以请耐心等待。

如果需要,我希望能够在之后更改数据库模式,因此所有内容都变为变量(表和列名称等内容)。我在开发过程中使用了两种方法:

  • 全局变量

db_schema.php:

$table = "table_name";
$column = "column_name";

main.php:

function do_db_stuff()
{
    global $table;
    global $column;
    global $db;
    $db->query("SELECT `$column_name` FROM `$table_name`;");
}
  • 定义

db_schema.php:

define (TABLE, "table_name");
define (COLUMN, "column_name");

main.php:

function do_db_stuff()
{
    global $db;
    $db->query("SELECT `" . COLUMN . "` FROM `" . TABLE . "`;");
}

现在,当我使用变量时,我喜欢查询字符串的漂亮语法 - 我不需要使用.连接,但是这种方法需要在开头时使用大量的global语句。每个功能。这是一个破坏者。第二种方法消除了global s,但语法不太好。

这个问题有没有经过时间考验的PHP风格解决方案?

3 个答案:

答案 0 :(得分:0)

这个怎么样?

$schema = array(
    'table' => 'spam',
    'column' => 'eggs',
);

function do_db_stuff() {
    global $db;
    global $schema;
    $sql = sprintf(
        'SELECT `%s` FROM `%s`',
        $schema['table'],
        $schema['column']
    );
    $db->query( $sql );
}

答案 1 :(得分:0)

我找到了以下非常干净的解决方案:

  • db_schema.php

    $table = "table";
    $column = "column";
    
  • main.php

    function do_stuff() 
    {
        require "db_schema.php";
        $db->query("SELECT `$column` FROM `$table`;");
    }
    

答案 2 :(得分:0)

我选择了以下对我来说最干净的解决方案:

  • db_schema.php

    $TABLE = "table";
    $COL = "column";
    
  • main.php

    function do_stuff
    {
        require 'db_schema.php';
        $db->query("SELECT `$COL` FROM `$TABLE`;);
    }