我可以在查询中声明变量吗?

时间:2015-08-16 04:51:40

标签: php mysql

$sql1 = 'SELECT * FROM someTable INNER JOIN someTable ON someTable.tID = someTable.threadID LEFT JOIN someTable ON someTable.ID = someTable.IMAGEID WHERE tID = $_GET["$somevariable"] ';

如果我手动将tID作为数字,则上述查询有效。我想要做的是在此页面上使用$_GET方法。因此$_GET方法可以在从其他页面指向此处时询问不同的数字

这可能吗?如果是这样怎么办?

我是初学者所以请不要给出正确的代码,但要解释为什么会发生这种情况,以便我可以从中吸取教训。

2 个答案:

答案 0 :(得分:3)

如果在您使用数字手动替换$_GET时查询有效,我首先要确保正确设置$_GET['whatever']。使用echo var_dump($_GET)查看有关该变量的所有信息。如果变量似乎已正确设置,则可能是串联问题。

尝试更改

$sql1 = 'SELECT * FROM someTable INNER JOIN someTable ON someTable.tID = someTable.threadID LEFT JOIN someTable ON someTable.ID = someTable.IMAGEID WHERE tID = $_GET["$somevariable"] ';

$sql1 = 'SELECT * FROM someTable INNER JOIN someTable ON someTable.tID = someTable.threadID LEFT JOIN someTable ON someTable.ID = someTable.IMAGEID WHERE tID = '.$_GET["$somevariable"].' ';

这会将变量正确插入查询中。

重要提示

您没有提供任何其他代码,因此我不知道您是否正确清理输入,但您确实不应该像这样编写SQL查询。请参阅PDO以获取参数化语句。如果您只是在查询中注入$_GET,请想象某人是否在您的表单中键入SQL。

答案 1 :(得分:1)

您可以这样使用:

$Id=$_GET["$somevariable"];
$sql1 = 'SELECT * FROM someTable INNER JOIN someTable ON someTable.tID = someTable.threadID LEFT JOIN someTable ON someTable.ID = someTable.IMAGEID WHERE tID = '. $Id ;