显示特定ID的行数据

时间:2013-08-03 13:23:44

标签: php mysql

我正在构建一个简单的错误跟踪工具。 您可以创建新项目,当您创建项目时,您必须填写表单,形成发布到project.class.php(这是此代码)

$name        = $_POST['name'];
$descr       = $_POST['description'];   
$leader      = $_POST['leader'];    
$email       = $_POST['email'];

$sql="INSERT INTO projects (name, description, leader, email, registration_date)
VALUES ('$name', '$descr', '$leader', '$email', NOW())";

$result = mysql_real_escape_string($sql);
$result = mysql_query($sql); 

if($result){
header('Location: ../projectpage.php?id='.mysql_insert_id());
}
else {
echo "There is something wrong. Try again later.";
}

mysql_close();

(它还没有sql注入证明,远非完整...)

最终,您将被重定向到唯一的项目页面,该页面链接到存储在MySQL数据库中的ID。我想在页面上显示该项目的名称,但它始终显示数据库中第一个项目的名称。

(这里我从MySQL数据库中选择数据。)

$query = 'SELECT CONCAT(name) 
AS name FROM projects';

$result = mysql_real_escape_string($query);
$result = mysql_query ($query);

(这里我在我的页面上显示了项目的名称,但它始终是MySQL数据库中第一个项目的名称)

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

如何显示正确项目的名称?与id链接的那个? 我有使用WHERE ....?

3 个答案:

答案 0 :(得分:0)

是的,您必须使用WHERE来指定您想要获得的项目。我还不确定为什么你只想要一个项目时使用CONCAT功能。

其他重要的是你必须在参数之前使用mysql_real_escape_string()函数你把它们放在查询字符串中。并为您收到的特定类型的数据使用适当的函数。

因此,您获取项目的声明应如下所示:

SELECT name FROM projects WHERE id = ' . intval($_GET['id'])

同样在使用mysql_fetch_assoc()函数之前,检查结果中是否有任何记录

if(mysql_num_rows($result) > 0)
{
  $project = mysql_fetch_assoc($result);
  /* $project['name'] */
}

答案 1 :(得分:0)

试试这个

// first get the id, if from the url use $_GET['id']
$id = "2";  
$query = "SELECT `name` FROM `projects` WHERE `id`='".intval($id). "'";
$result = mysql_query(mysql_real_escape_string($query));

使用mysql_fetch_row,在这里你不必循环遍历每条记录,只返回单行

// if you want to fetch single record from db
// then use mysql_fetch_row()
$row = mysql_fetch_row($result);
if($row) {
    echo '<h5>'.$row[0].'</h5>';
}

$row[0]表示您的选择查询中提到的第一个字段,此处为name

答案 2 :(得分:-1)

可能有帮助:

您当前正在协助查询字符串参数projectpage.php?id=

当你访问页面时,sql必须选择并过滤查询字符串参数,如下所示:

$query = 'SELECT CONCAT(name) AS name FROM projects WHERE projectid ='. $_GET["id"];

$result = mysql_real_escape_string($query);
$result = mysql_query ($query);

也可以在分配结果后将mysql_insert_id()移到右边以保证安全。

$result = mysql_query($sql);
$insertId = mysql_insert_id();

然后当你将它分配给查询字符串时,只需使用参数和

header('Location: ../projectpage.php?id='.$insertId);