在PHP中,如果我有这个分配:
$link = 'Home';
在另一个php部分我需要获取$ link的值并将其插入到纯文本的MYSQL查询中,如下所示:
$sql = "SELECT txt FROM Home WHERE id = 1";
请注意,$ link已在查询中以其值的格式编写。 基本上我需要查看$ link var的内部并将其写在查询中。
为什么我需要这个 - >因为我在点击提交按钮后即时创建php文件。 在新创建的文件内部是一个tinymce文本编辑器,需要从一个表中读取它的文本内容,该表也是随着这个文件一起创建的。
答案 0 :(得分:0)
你想要这样的东西:
$sql = "SELECT txt FROM ".$link." WHERE id = 1";
答案 1 :(得分:0)
你想要做的是:
$sql = "SELECT txt FROM $link WHERE id = 1";
^ ^ ^
双引号("
)指定必须解释字符串(使用单引号,这将不起作用)。在字符串中,您可以写出变量的名称($link
),它将被其值“取代”。
我不建议这样做,因为它容易受到SQL注入攻击,这是一种非常糟糕的做法,表明你以一种不寻常的方式做事。最好避免它!
编辑:更糟糕......
当你在评论中说创建一个带有文件名的mysql表时,这是更糟糕的事情。首先,文件名中的所有字符都不应该进入表名。其次,您可以将任何作为文件名,甚至是非实际文件名的内容。
可以伪造HTTP请求,以便文件名是您喜欢的任意字符串,例如:
a (); SELECT * FROM accounts; --
将此字符串放入查询时:
CREATE TABLE $filename (id int PRIMARY KEY, whatever varchar(20) NOT NULL);
您得到了这个结果SQL查询:
CREATE TABLE a (); SELECT * FROM accounts; -- (id int PRIMARY KEY, whatever varchar(20) NOT NULL);
正如您所看到的,如果表a
存在,这将创建一个没有任何列的表accounts
,然后选择所有用户名和密码。查询的其余部分已使用--
注释掉。
这是一个非常简单的SQL注入攻击,你不想这样做!不要将用户输入直接放入SQL查询!!
编辑:从$_POST
如果您的字段名称为link
,则可以使用
$_POST['link']
你可以这样把它放到你的字符串中:
$sql = "SELECT txt FROM {$_POST['link']} WHERE id = 1";