2013-08-02 86 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? –