我對PHP和MySQL相當新(對其他語言有經驗)。基本上我想加載一行中的數據,相對於它在URL中聲明的id。例如,加載第三排時「的index.php ID = 3?」根據php加載MySQL的行?id = *
繼承人什麼我已經設法到目前爲止做:http://pastie.org/1436865
我敢肯定,這個問題已經被問過無數次,但我不知道遠搜索什麼期限和一直沒能找到任何至今:S
謝謝你們
我對PHP和MySQL相當新(對其他語言有經驗)。基本上我想加載一行中的數據,相對於它在URL中聲明的id。例如,加載第三排時「的index.php ID = 3?」根據php加載MySQL的行?id = *
繼承人什麼我已經設法到目前爲止做:http://pastie.org/1436865
我敢肯定,這個問題已經被問過無數次,但我不知道遠搜索什麼期限和一直沒能找到任何至今:S
謝謝你們
最簡單的方法是
$id = (int) $_GET['id'];;
$result = mysql_query("SELECT * FROM tablename WHERE id=".$id);
while($res = mysql_fetch_object($result)){
echo $res->columnname;
}
當然,你應該檢查輸入參數等。這只是方法。
你也可以在php.net上閱讀mysql函數的文檔。例如,mysql_fetch_object頁面,您可以在這裏找到 - http://php.net/manual/en/function.mysql-fetch-object.php – Igor 2011-01-07 11:27:55
的部分id=3...
被稱爲查詢字符串,您可以使用$_GET
陣列(見PHP: Predefined Variables)訪問它。
順便說一句:從數據庫表中加載第3行是沒有意義的,因爲數據庫表中的行沒有排序(所以不是行列表,而是一組記錄是更合適的在這種情況下是類比)。記錄通常由所謂的主鍵來標識,並且您必須確保您的數據庫表具有主鍵。
或者如果你喜歡陣列的替代對象嘗試這樣的事:
$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];
基於所有這些不那麼清楚,但工作的例子,你可以做一個功能:
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']));
還要注意奧斯瓦爾德的筆記,這是非常重要的。你不能也不應該依賴這一排的相對位置,因爲根本沒有位置。數據庫表是堆,而不是有序列表。 使用某些唯一的字段值來解決某一行。這是要走的路
對於鏈接到代碼的明確問題+1。我現在沒有時間回答所有的問題,但我會告訴你,你可以使用`$ id =(int)$ _GET ['id'];``從查詢字符串中獲得id。祝你好運! – 2011-01-07 11:21:30
紳士和一位學者,你是先生:)這樣做! – DexCurl 2011-01-07 11:29:21