2013-08-02 44 views
0

我正在構建一個簡單的錯誤跟蹤工具。 當您創建一個新項目時,您在窗體中填寫的所有信息都會存儲在數據庫中。顯示來自MySQL中特定行的數據

當您創建新項目時,您將被重定向到唯一的項目頁面。 在頁面頂部顯示項目的名稱,但它不是我剛剛創建的項目的名稱,它始終顯示MySQL表中第一個項目的名稱。

如何顯示我剛創建的項目名稱?

使用此查詢我從數據庫中檢索數據。

$query = "SELECT CONCAT(name) 
AS name FROM projects"; 
$result = @mysql_query ($query) 

用這個我顯示項目名稱,但它總是顯示錶中第一條記錄的名稱。

<?php 
    if ($row = mysql_fetch_array ($result)) 
     echo '<h5>' . $row['name'] . '</h5>'; 
    ?> 

這還不是SQL注入證明,並且還遠遠沒有完成...但我真的很苦惱這個問題。

+0

當您從數據庫中檢索數據時,必須使用'where'子句對其進行過濾。 –

+0

對不起,請不要使用mysql_ *函數,使用MySQLi,請不要使用@ ....來壓制錯誤。也就是說,確保你的表有一個'id' auto_increment列。你可以通過訪問MySQLi對象的'insert_id'屬性或'mysql_insert_id()'(我認爲)來獲得最近插入的項目的id。 –

回答

0

嘗試使用ORDER BY

$query = "SELECT CONCAT(name) 
AS name FROM projects ORDER BY id DESC"; 

這將顯示最近的項目(假設您有一個ID列)。

但是,更好的方法是在頁面上有一個ID變量。

$query = "SELECT CONCAT(name) 
AS name FROM projects WHERE id=?"; 
1

您需要在表中的AUTO_INCREMENT場的唯一標識符(至少,你真的應該)。然後,你可以做這樣的事情:

<?php 
$sql = new MySQLi('localhost', 'root', '', 'database'); 

$sql->query('INSERT INTO `projects` (`name`) VALUES ("Test Project");'); 
$projectID = $sql->insert_id; // Returns the auto_increment field value of the last insert query performed 
// So this assumes you have a field in your table called "id" in this example 

$res = $sql->query('SELECT CONCAT(`name`) AS `name` FROM `projects` WHERE `id` = '.$projectID.';'); 

if ($row = $res->fetch_assoc()) { 
    echo '<h5>'.$row['name'].'</h5>'; 
} 
?> 

既然你要求重定向到獨特的項目頁面,你應該有這樣的事情:header("Location: project.php?id=$projectID");

然後,在project.php,你可以嘗試取得與該查詢的項目上面,只有你查詢的WHERE子句應該是這樣的:

'`id` = '.intval($_GET['id']).';' 

從技術上講,你可以給下一個頁面通過所有項目信息的請求或會話cookie,並保存自己一個查詢alto GETHER。只需確保您方便地保留id,以便更新記錄。

+0

填寫表單後,會將信息發佈到project.class。php文件 –

+0

$ name \t = $ _POST ['name']; \t $ descr \t = $ _POST ['description']; \t \t $ leader = $ _POST ['leader']; \t \t $ email = $ _POST ['email']; \t \t $ SQL =「INSERT INTO項目(名稱,描述,領導者,電子郵件註冊) \t VALUES( '$名', '$ DESCR', '$領導者', '$電子郵件',NOW()) 「; \t $ projectID = $ sql-> insert_id; \t $ result = mysql_query($ sql); \t \t if($ result){ \t header('Location:../ projectpage.php?id ='。mysql_insert_id()); \t} \t else { \t echo「有什麼問題,請稍後再試。」; \t} \t \t mysql_close(); –

+0

然後你重定向到項目頁面,我不想檢索數據,所以我應該使用SELECT? –