我正在构建一个简单的错误跟踪工具。 当您创建新项目时,您在表单中填写的所有信息都将存储在数据库中。
创建新项目时,您将被重定向到唯一的项目页面。 在页面顶部显示项目的名称,但它不是我刚刚创建的项目的名称,它始终显示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 :(得分: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=?";