Php 每当我';我使用$\u GET在我的DB jquery/JS中获取一个特定的行,但什么都不做
我正在尝试使用jquery/php/mysql创建一个应用程序。它应该首先列出数据库中的所有存储,这样就可以了。但是,当你点击一个,你应该得到更多关于该特定商店的信息。问题就从这里开始 基本上,如果我想从数据库中获取所有行,那么一切都可以正常工作。但是,当我试图使用查询字符串选择特定行时,它不起作用。我已经尝试了很多方法,我发现是php文件中的$\u GET导致jquery函数中断,根本不输出任何内容。即使我只在屏幕上做一个回声,它也会破坏它。我不明白为什么。例如,如果我只选择“select*where id=2”,效果会很好。但在使用GET获取查询字符串2时就不是这样了 (另外,现在这只是JSON,但稍后我当然需要跨领域的jsonp) 这是我的php代码:Php 每当我';我使用$\u GET在我的DB jquery/JS中获取一个特定的行,但什么都不做,php,jquery,mysql,json,Php,Jquery,Mysql,Json,我正在尝试使用jquery/php/mysql创建一个应用程序。它应该首先列出数据库中的所有存储,这样就可以了。但是,当你点击一个,你应该得到更多关于该特定商店的信息。问题就从这里开始 基本上,如果我想从数据库中获取所有行,那么一切都可以正常工作。但是,当我试图使用查询字符串选择特定行时,它不起作用。我已经尝试了很多方法,我发现是php文件中的$\u GET导致jquery函数中断,根本不输出任何内容。即使我只在屏幕上做一个回声,它也会破坏它。我不明白为什么。例如,如果我只选择“select*w
<?php
// Settings for accessing the DB.
$host = "localhost";
$db = "mappdb";
$username ="db-username";
$password ="******";
// Connect and query the DB and get the data for all attractions
$connect = mysql_pconnect($host, $username, $password) or die("Could not connect to the database");
mysql_select_db($db) or die("Could not select the database");
$arr = array();
$idnumber = $_GET["pid"];
$result = mysql_query("select * from attractions where id = $idnumber");
while($object = mysql_fetch_object($result)) {
$arr[] = $object;
}
echo '{"attractions":'.json_encode($arr).'}';
?>
下面是我的jquery:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="jquery.mobile-1.3.1.min.css" />
<script src="jquery-1.9.1.min.js"></script>
<script src="jquery.mobile-1.3.1.min.js"></script>
<title>Store Finder</title>
</head>
<body>
<div data-role="page" id="page">
<div data-role="header" data-position="fixed">
<a href="index.html" data-icon="back">Back</a>
<h6>Search</h6>
</div>
<div data-role="content">
<ul data-role="listview" data-filter="true" id="listed" data-filter-placeholder="Filter cities or stores..." data-inset="true">
<script type="text/javascript">
$(document).ready(function(){
var url="http://localhost/mapp/json.php?pid=2";
$.getJSON(url,function(json){
// loop through the stores here
$.each(json.attractions,function(i,dat){
$("#listed").append(
'<li><a href="viewstore.html?id='+dat.id+'">'+dat.id+' '+dat.name+'</a></li>'
).listview('refresh');
});
});
});
</script>
</ul>
</div>
<div id="msg"> </div>
<div data-role="footer" data-position="fixed">
<h6>Footer</h6>
</div>
</div>
</body>
</html>
寻店者
搜寻
$(文档).ready(函数(){
变量url=”http://localhost/mapp/json.php?pid=2";
$.getJSON(url,函数(json){
//在这里逛商店
$.each(json.attractions,function(i,dat){
$(“#列出”)。追加(
“”
).listview(“刷新”);
});
});
});
页脚
我整天都坐在这里,一辈子都想不出来。非常感谢您的帮助。谢谢 安全顾问
首先,您的代码存在一些非常严重的安全问题
$\u GET['pid']
,这使您的应用程序容易受到攻击。
请参考谷歌搜索的对策,并得到这个固定尽快李>
你的问题
最有可能是$.getJson()
首先,我要通过查看浏览器Firebug/Developer Tools的“网络”选项卡,查看被调用的url,确保将
?pid=2
-部分真正附加到url中。我认为它完全忽略了pid。
可以通过如下方式调用函数来解决此问题:
var url = "http://localhost/mapp/json.php
var data = { 'pid': 2};
$.getJSON(url, data, function(json) {
...
});
根据该函数的定义,该函数接受3个参数。
第一个是url,第二个是普通数据对象,第三个是成功的回调函数。
数据
将被视为url编码并附加到url的查询参数列表。如果直接在浏览器中访问“”,会发生什么情况?切勿对SQL字符串使用字符串插值。严肃地说:。还要考虑JSONP。请在编写任何SQL接口代码之前,先读一读,因为你在这里做的是非常危险的。正如其他人所指出的,您不能在新的应用程序中使用mysql\u query
,它将在未来的PHP版本中被删除,因此出于兼容性原因,有必要切换到类似的现代接口。很抱歉对你们大发雷霆,但像这样的一个小错误会带来巨大的后果。谢谢你们。不用担心跳跃。:)这真的很有帮助。我以前做过很多php编码,但那是很多年前的事了。我现在已经改用PDO了。谢谢!这就是问题所在。现在效果很好。谢谢你的安全建议。欢迎:)作为我在他的PHP安全书籍中推荐的SQL注入和其他安全主题的良好开端。谢谢!)我一定会调查的。