当“”在URL中时,为什么通过URL从MySQL获取数据不起作用?

时间:2014-10-21 12:51:59

标签: php html mysql url

我在MySQL数据库中有一个包含idlocationtypecontent列的表。如果通过网址中的id获取特定行,例如domain.com/page.php?id=1我可以通过以下方式执行此操作:

$sql = "SELECT * FROM database_table WHERE id=" . $_GET["id"];
$rs = mysql_query($sql);    
while($row = mysql_fetch_array($rs)) {

echo $row['location'] . $row['type'] . $row['content'] ;    

但是,如果我想通过URL中的其他行获取它,例如domain.com/page.php?location=paris&type=housing

我尝试用以下代码替换上面的第一行代码:

$strSQL = "SELECT * FROM database_table WHERE location=" . $_GET['location']
                                                         . "AND type=" 
                                                         . $_GET['type'] ;

代码不适用于此网址:

domain.com/page.php?location=paris&type=housing

但可以使用此URL(请注意""行之间):

domain.com/page.php?location="paris"&type="housing"

我的问题:我能做些什么才能做到这一点,我不必拥有" "在URL之间的行之间,以便查询起作用?

1 个答案:

答案 0 :(得分:2)

更改

$strSQL = "SELECT * FROM database_table WHERE location=" . $_GET['location'] . "AND type=" . $_GET['type'] ;

$strSQL = "SELECT * FROM database_table WHERE location='" . $_GET['location'] . "' AND type='" . $_GET['type'] . "'";

确保你清理你的$ _GET数据但是你很容易受到mysql注入攻击。 不推荐使用Mysql_query,使用PDO。

您将能够在网址中没有引号的情况下调用您的脚本:

  

domain.com/page.php?location=paris&type=housing