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

标签 php html mysql url

我在 MySQL 数据库中有一个表,其中包含 idlocationtypecontent 列。如果通过 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/

相关文章:

javascript - jQuery - 必须按下按钮两次或更多次才能使功能保持不变

mysql - HTTP ERROR 500 prbm accessing/solr/dataimport 无法配置 solr

PHP 不遵守我定义的 ETag

php - 我可以使用 Laravel 的 `call` 方法在单元测试中发送原始 JSON 数据吗?

php - preg_replace_callback 错误中的正则表达式。 PHP

php - 如何为从数据库查询数据的选择下拉列表设置标题

php - 警告 : unlink(/web/htdocs/www. vhannibal.net/home/setting/) : Is a directory in [. ..]

javascript - 将数据附加到 simpleWebRTC 房间或视频

javascript - Jquery 在 td 中创建带有字典条目的 html 表

javascript - 将动画函数作为参数传递