我在 MySQL 数据库中有一个表,其中包含 id
、location
、type
、content
列。如果通过 URL 中的 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'] ;
该代码在此 URL 上不起作用:
domain.com/page.php?location=paris&type=housing
但可以使用此 URL(注意行之间的“”):
domain.com/page.php?location="paris"&type="housing"
我的问题:我可以做些什么来使 URL 中的行之间不必有“”才能使查询正常工作?
最佳答案
改变
$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 注入(inject)攻击。 Mysql_query 也已弃用,请使用 PDO。
您将能够在网址中不带引号的情况下调用脚本:
domain.com/page.php?location=paris&type=housing
关于php - 当 URL 中包含 “” 时,为什么通过 URL 从 MySQL 获取数据不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26487190/