Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQL查询中插入PHP常量?_Php_Mysql_Sql - Fatal编程技术网

如何在SQL查询中插入PHP常量?

如何在SQL查询中插入PHP常量?,php,mysql,sql,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); ?> 您必须使用字符串连接(任何类型) 常量不会像变量那样插

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

?>

您必须使用字符串连接(任何类型)

常量不会像变量那样插入字符串

一种不切实际的替代方法是使用变量函数:

$const = 'constant';
$query = "SELECT users FROM {$const('DB_TABLE_1')}";

它将执行
constant()
函数并返回常量的值,但这通常不是一个好主意,如果只是为了可读性的缘故。

只需将其放在引号之外,它应该可以正常工作:

$query = "SELECT users FROM ".DB_TABLE_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");
我找到了两种方法

一,-

二,-


我之所以使用倒勾(``),是因为我使用的是phpmyadmin,您可能不需要它们。

如果PHP只知道常量和只读变量之间的区别……我偶然发现了您关于在查询中使用常量的答案,如果可能的话(这方面没有太多)。我认为这是一个相当好的主意,马克。有时,如果再往前走一两步,稍微有点粗俗会有助于防止注射。这与我不久前所做的工作相似,并取得了一些有希望的结果。
$query = "SELECT TB_1.users, TB_2.names FROM '.TB_1.'
          INNER JOIN '.TB_2.' 
          ON x=y";
define("DB_HOST","localhost");
define("VALUE1", "someValue");
$query = "SELECT * FROM TABLE WHERE `Column` /*=" . VALUE1 . "*/";
define("VALUE1", "someValue");
define("VALUE2", "otherValue");
$query = "INSERT INTO TABLE (`Column1`, `Column2`) VALUES (" . VALUE1 . ", " . VALUE2 . ")";