2012-07-17 35 views
-1

我不知道我的錯誤在哪裏,但記錄請求總是返回相同的記錄。MySQL請求總是返回相同的記錄

首先我想問的列表(正常工作) - list.js

$('#listPage').bind('pageinit', function(event) { 
    getList(); 
}); 

function getList() { 
    $.getJSON(serviceURL + 'getlist.php', function(data) { 
     $('#list li').remove(); 
     list= data.items; 
     //edit function below based on db table 
     $.each(list, function(index, sites) { 
      $('#list').append('<li><a href="details.html?id=' + sites.id + '">' + 
        '<h4>' + sites.title + '</h4>' + 
        '<p>' + sites.address + '</p></a></li>' 
        ); 
     }); 
     $('#list').listview('refresh'); 
    }); 
} 

getlist.php

include 'config.php'; 
//change FROM to ____ 
$sql = "SELECT id, title, address, picture1 FROM sites ORDER BY title"; 

try { 
    $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $stmt = $dbh->query($sql); 
    $details = $stmt->fetchAll(PDO::FETCH_OBJ); 
    $dbh = null; 
    echo '{"items":'. json_encode($details) .'}'; 
} catch(PDOException $e) { 
    echo '{"error":{"text":'. $e->getMessage() .'}}'; 
} 

然後內的某處以下的記錄搞的一團糟。 - details.js

$('#detailsPage').live('pageshow', function(event) { 
    var id = getUrlVars()["id"]; 
    $.getJSON(serviceURL + 'getdetails.php?id='+ id, displayDetail); 
}); 

function displayDetail(data) { 
    var sites = data.item; 
    console.log(sites); 
     $('#pic').attr('src', 'http://hh.lpbp.net/assets/uploads/files/' + sites.picture1); 
    $('#title').text(sites.title); 
    $('#address').text(sites.address); 
    $('#pic2').attr('src', 'http://hh.lpbp.net/assets/uploads/files/' + sites.picture2); 
    if (sites.phone) { 
     $('#actionList').append('<li><h3>Phone #:</h3>' + '<p>' + '<a href="tel:' + sites.phone + '">'+ sites.phone + '</a></p></li>'); 
    } 
    if (sites.website) { 
     $('#actionList').append('<li><h3>Website</h3>' + '<p>' + '<a href="#" onClick="Ti.App.fireEvent(\'openURL\', { url:\'http://' +sites.website +'\'}); return false;">' + sites.website + '</a></p></li>'); 
    } 
    if (sites.description) { 
     $('#actionList').append('<li><h3>Description</h3>' + '<p>' + sites.description + '</p></li>'); 

    } 
    $('#actionList').listview('refresh'); 

} 

function getUrlVars() { 
    var vars = [], hash; 
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); 
    for(var i = 0; i < hashes.length; i++) 
    { 
     hash = hashes[i].split('='); 
     vars.push(hash[0]); 
     vars[hash[0]] = hash[1]; 
    } 
    return vars; 
} 

getdetails.php

include 'config.php'; 
//Change FROM ___ 
$sql = "SELECT id, title, address, phone, website, description, picture1, picture2 FROM sites ORDER BY title"; 

try { 
    $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $stmt = $dbh->prepare($sql); 
    $stmt->bindParam("id", $_GET[id]); 
    $stmt->execute(); 
    $detail = $stmt->fetchObject(); 
    $dbh = null; 
    echo '{"item":'. json_encode($detail) .'}'; 
} catch(PDOException $e) { 
    echo '{"error":{"text":'. $e->getMessage() .'}}'; 
} 

回答

2

你從來不會使用列表的id價值,所以你只要獲取整個sites表,拉斷的第一行,並返回。

在那裏你應該有一個WHERE條款。您正在綁定id字段,但查詢中沒有:id參數,所以基本上您正在吹煙。

$sql = "SELECT blah,blah,blah FROM sites WHERE id = :id"; 
             ^^^^^^^^^^^^^^^ 

ORDER BY是沒有意義的,除非你希望要回多行。一行結果已經排序。