我正在编写一个供个人使用的小型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风格解决方案?
答案 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`;);
}