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



我正在编写一个小的php/mysql应用程序以供个人使用。这是我第一次使用PHP,所以请忍受。

我希望之后能够更改DB模式,如果需要,所有内容都变成了变量(表和列名称之类的东西)。我在开发过程中使用了两种方法:

  • 全局变量

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式解决方案?

呢?

$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 );
}

我找到了以下解决方案,看起来很干净:

  • db_schema.php

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

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

我解决了以下解决方案,这对我来说似乎是最干净的:

  • db_schema.php

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

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

相关内容

  • 没有找到相关文章