我正在编写一个小的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`;); }