2011-01-07 65 views
2

我對PHP和MySQL相當新(對其他語言有經驗)。基本上我想加載一行中的數據,相對於它在URL中聲明的id。例如,加載第三排時「的index.php ID = 3?」根據php加載MySQL的行?id = *

繼承人什麼我已經設法到目前爲止做:http://pastie.org/1436865

我敢肯定,這個問題已經被問過無數次,但我不知道遠搜索什麼期限和一直沒能找到任何至今:S

謝謝你們

+0

對於鏈接到代碼的明確問題+1。我現在沒有時間回答所有的問題,但我會告訴你,你可以使用`$ id =(int)$ _GET ['id'];``從查詢字符串中獲得id。祝你好運! – 2011-01-07 11:21:30

+0

紳士和一位學者,你是先生:)這樣做! – DexCurl 2011-01-07 11:29:21

回答

0

最簡單的方法是

$id = (int) $_GET['id'];; 
$result = mysql_query("SELECT * FROM tablename WHERE id=".$id); 
while($res = mysql_fetch_object($result)){ 
    echo $res->columnname; 
} 

當然,你應該檢查輸入參數等。這只是方法。

+0

你也可以在php.net上閱讀mysql函數的文檔。例如,mysql_fetch_object頁面,您可以在這裏找到 - http://php.net/manual/en/function.mysql-fetch-object.php – Igor 2011-01-07 11:27:55

1

的部分id=3...被稱爲查詢字符串,您可以使用$_GET陣列(見PHP: Predefined Variables)訪問它。

順便說一句:從數據庫表中加載第3行是沒有意義的,因爲數據庫表中的行沒有排序(所以不是行列表,而是一組記錄是更合適的在這種情況下是類比)。記錄通常由所謂的主鍵來標識,並且您必須確保您的數據庫表具有主鍵。

1

或者如果你喜歡陣列的替代對象嘗試這樣的事:

$query="SELECT * FROM table WHERE id=".(int)$_GET['id']." LIMIT 1"; 
$result=mysql_query($query); 

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    echo $row['column']; 
} 

,或者如果你想索引的列

while ($row = mysql_fetch_array($result, MYSQL_NUM)) { 
    echo $row[0]; 
} 

或兩個(列名和索引):

while ($row = mysql_fetch_array($result, MYSQL_BOTH)) { 
    echo $row[0].'-'.$row['column']; 
} 

如果你只需要一行,你甚至可以使用這個:

$result = mysql_query("SELECT * FROM table WHERE id=".(int)$_GET['id']); 
$row = mysql_fetch_row($result); 
echo $row[0]; 
1

基於所有這些不那麼清楚,但工作的例子,你可以做一個功能

function getRow($query){ 
    $res = mysql_query($query); 
    if (!$res) { 
    trigger_error(mysql_error." in ".$query); 
    return array(); 
    } 
    $row = mysql_fetch_assoc($res)); 
    if ($row) return $row; 
    return array(); 
} 

然後將其存儲到一些庫文件,然後包括這個文件到您的腳本,只有一行調用

$data = getRow("SELECT * FROM tablename WHERE id=".intval($_GET['id'])); 

還要注意奧斯瓦爾德的筆記,這是非常重要的。你不能也不應該依賴這一排的相對位置,因爲根本沒有位置。數據庫表是堆,而不是有序列表。 使用某些唯一的字段值來解決某一行。這是要走的路