我有一个PHP文件,我的数据库配置设置被定义为常量,例如:
<?php
define(DB_HOST,"localhost");
define(DB_USERNAME,"root");
define(DB_PASSWORD,"password");
define(DB_NAME,"db_users");
define(DB_TABLE_1,"table_1");
define(DB_TABLE_2,"table_2);
?>
每当我想连接到我的数据库时,我显然都包含上面的文件。但是,当我将表定义常量插入到SQL查询中时(见下文),它似乎不起作用。我是否需要正确地逃避常量或以某种方式连接它?
$query = "SELECT users FROM DB_TABLE_1";
答案 0 :(得分:15)
您必须使用字符串连接(任何类型)。
$query = "SELECT users FROM " . DB_TABLE_1;
常量不会像变量那样插入到字符串中。
一种骇人的替代方法是使用变量函数:
$const = 'constant';
$query = "SELECT users FROM {$const('DB_TABLE_1')}";
它将执行constant()
函数并返回常量的值,但这通常不是一个好主意,只是为了清晰起见。
答案 1 :(得分:3)
将它放在引号之外,它应该可以正常工作:
$query = "SELECT users FROM ".DB_TABLE_1;
答案 2 :(得分:0)
我找到了两种方法。
1 .-
define("VALUE1", "someValue");
$query = "SELECT * FROM TABLE WHERE `Column` /*=" . VALUE1 . "*/";
2 .-
define("VALUE1", "someValue");
define("VALUE2", "otherValue");
$query = "INSERT INTO TABLE (`Column1`, `Column2`) VALUES (" . VALUE1 . ", " . VALUE2 . ")";
我使用的反引号(``)因为我使用的是phpmyadmin,你可能不需要它们。
答案 3 :(得分:-1)
我认为这更容易:
$query = "SELECT users FROM '.DB_TABLE_1.'";
使用多个表时:
$query = "SELECT TB_1.users, TB_2.names FROM '.TB_1.'
INNER JOIN '.TB_2.'
ON x=y";
此外,这更好:
define("DB_HOST","localhost");