显示MySQL中特定行的数据

时间:2013-08-02 20:59:44

标签: php 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注入证明并且远未完成......但我真的在努力解决这个问题。

2 个答案:

答案 0 :(得分: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传递到下一页,并完全保存查询。只需确保保持id方便,以便更新记录。

答案 1 :(得分: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=?";