Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 每当我';我使用$\u GET在我的DB jquery/JS中获取一个特定的行,但什么都不做_Php_Jquery_Mysql_Json - Fatal编程技术网

Php 每当我';我使用$\u GET在我的DB jquery/JS中获取一个特定的行,但什么都不做

Php 每当我';我使用$\u GET在我的DB jquery/JS中获取一个特定的行,但什么都不做,php,jquery,mysql,json,Php,Jquery,Mysql,Json,我正在尝试使用jquery/php/mysql创建一个应用程序。它应该首先列出数据库中的所有存储,这样就可以了。但是,当你点击一个,你应该得到更多关于该特定商店的信息。问题就从这里开始 基本上,如果我想从数据库中获取所有行,那么一切都可以正常工作。但是,当我试图使用查询字符串选择特定行时,它不起作用。我已经尝试了很多方法,我发现是php文件中的$\u GET导致jquery函数中断,根本不输出任何内容。即使我只在屏幕上做一个回声,它也会破坏它。我不明白为什么。例如,如果我只选择“select*w

我正在尝试使用jquery/php/mysql创建一个应用程序。它应该首先列出数据库中的所有存储,这样就可以了。但是,当你点击一个,你应该得到更多关于该特定商店的信息。问题就从这里开始

基本上,如果我想从数据库中获取所有行,那么一切都可以正常工作。但是,当我试图使用查询字符串选择特定行时,它不起作用。我已经尝试了很多方法,我发现是php文件中的$\u GET导致jquery函数中断,根本不输出任何内容。即使我只在屏幕上做一个回声,它也会破坏它。我不明白为什么。例如,如果我只选择“select*where id=2”,效果会很好。但在使用GET获取查询字符串2时就不是这样了

(另外,现在这只是JSON,但稍后我当然需要跨领域的jsonp)

这是我的php代码:

<?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(“刷新”); }); }); });
页脚
我整天都坐在这里,一辈子都想不出来。非常感谢您的帮助。谢谢

安全顾问 首先,您的代码存在一些非常严重的安全问题

  • 您使用的是mysql_*函数,在任何受支持的PHP版本中都不推荐使用。请改用mysqli_*或PDO
  • 您在查询中直接使用用户参数
    $\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注入和其他安全主题的良好开端。谢谢!)我一定会调查的。