-1

我喜欢在字符串中嵌入变量 -"I like $verb $noun in strings!"

但后来我正在设计一个数据库访问脚本:

$sqlfragment = "SELECT * from " . $databasetableprefix . "_user";

迷人的。但是我在字符串中的嵌入变量发生了什么?!

我想做这样的事情:

$sqlfragment = "SELECT * from $databasetableprefix_user";

但这将被解释为来自变量$databasetableprefix_user

所以我会使用一个空格:

$sqlfragment = "SELECT * from $databasetableprefix _user";

但是数据库表名中不允许有空格,所以这是行不通的。

(我想要的是这个结果字符串:"SELECT * from cc_user",如果cc是前缀。)

我可以使用变量嵌入创建这个字符串吗?也许是一种“无”字符,它会阻止 PHP 认为它是变量名的一部分,但不会传递给 SQL?

4

3 回答 3

4
$sqlfragment = "SELECT * from {$databasetableprefix}_user";
于 2013-04-13T18:55:03.553 回答
2

将变量包装在 {} 中,如下所示:

$sqlfragment = "SELECT * from {$databasetableprefix}_user";

于 2013-04-13T18:55:53.080 回答
2

您必须使用大括号来告诉 PHP 变量名称的开始和结束位置,如PHP 手册中详细描述的那样

$sqlfragment = "SELECT * from {$databasetableprefix}_user";

此外,使用变量生成 SQL 语句时要非常小心,因为如果您不仔细跟踪变量的来源或验证它们的值,它很容易成为安全风险。

于 2013-04-13T18:56:53.967 回答