如何将PHP常量插入SQL查询?

时间:2012-01-16 17:33:21

标签: php mysql sql

我有一个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";

4 个答案:

答案 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");