单击链接时获取mysql字段数据?

单击链接时获取mysql字段数据?,mysql,hyperlink,event-handling,Mysql,Hyperlink,Event Handling,如果单击链接,我将尝试从数据库中获取数据 基本上,我有一个main.php,其中包含以下内容: $sql2="SELECT projectsid, projectname, description, SUBSTRING(description,0,80) FROM projects"; $result2=mysql_query($sql2); while($row2 = mysql_fetch_assoc($result2)) { echo "<div id=\

如果单击链接,我将尝试从数据库中获取数据

基本上,我有一个main.php,其中包含以下内容:

$sql2="SELECT projectsid, projectname, description, 
    SUBSTRING(description,0,80) FROM projects";
$result2=mysql_query($sql2);    

while($row2 = mysql_fetch_assoc($result2)) {
    echo "<div id=\"links\">";
    echo "<ul>";
    echo "<li> <a href=\"fullproject.php\">" . $row2['projectname'];
    $_SESSION['projectname']= $row2['projectname'];
    echo "<em>" . $row2['description'] . "</em></a></li>";
    echo "</ul>";
    echo "</div>";
}
$sql2=“选择项目SID、项目名称、说明、,
来自项目的子字符串(说明,0,80);
$result2=mysql\u查询($sql2);
而($row2=mysql\u fetch\u assoc($result2)){
回声“;
回声“
    ”; 回声“
  • ”; 回声“
”; 回声“; }
这将显示名称列表和简要说明

  • Proj1
    • 描述
  • 项目2
    • 描述
我想做的是,如果单击某个项目,则显示该项目的全部内容

fullproject.php

<?php
session_start(); 
$projectname= $_SESSION['projectname'];

// Connect to server.
require ("connect.php");

$sql1="SELECT projectsid, projectname, programme, difficult, requirements,
    resources, description, contact, gsize, size 
    FROM projects WHERE projectname = '$projectname'";
$result1=mysql_query($sql1);    

while($row1 = mysql_fetch_assoc($result1)) {
echo "Project Name: " . $row1['projectname']. "<br />";
echo "Programme : " . $row1['programme'] . "<br />";
echo "Difficult : " . $row1['difficult'] . "<br />";
echo "Requirements : " . $row1['requirements'] . "<br />";
echo "Resources : " . $row1['resources'] . "<br />";
echo "Description : " . $row1['description'] . "<br />";
echo "Contact : " . $row1['contact'] . "<br />";
echo "Group size : " . $row1['gsize'] . " " . $row1['size'] . "<br />";
echo "<br /> ";
}
$project_id=$_GET['project_id'];
<?php
session_start(); 
require ("connect.php");
$projectname= mysql_real_escape_string($_GET['projectname']);


然后,您可以使用此id显示数据库中该项目id的内容

尝试使用GET变量而不是会话

在main.php中使用

    echo "<li> <a href='fullproject.php?projectname=$row2[projectname]'>";

这个代码有很多错误

1) 您正试图通过main.php中的两种不同方法发送表的主键:在会话中和通过URL路径。这只是一种不好的做法——您可以访问不同的管道来传递数据的原因是,它们都有不同的语义,但即使这样,发送相同的内容两次,接收端也总是有可能看到不同的值,因此必须有协调差异的方法

2) 您正在使用会话传递事务数据项。这是一个坏主意-数据项与特定转换相关-而不是与会话相关$_会话应仅用于存储与会话相关的数据,而不是与导航或事务相关的数据

3) 为传递数据项提供的另一个管道是通过将数据项附加到URL内的路径。虽然在某些情况下,这种方法有一些好处,但它也有一些特定于代码在其上实现的Web服务器的复杂性-您没有解释为什么使用这种方法而不是传统的$\u GET或$\u POST var

代码失败的原因是,在$\u会话['projectname']中只能存储一个值。即使您在会话中存储了一个值数组,Web服务器也无法知道在代码交付到浏览器时选择了哪些值

你的HTML结构不好,格式也不好

您显示的代码与您给出的描述不匹配(它不显示项目名称)

您的代码也容易受到SQL注入攻击

更改它,以便在main.php中:

echo "<div id=\"links\">\n";
echo "<ul>\n";
while($row2 = mysql_fetch_assoc($result2)){
   echo "<li> <a href=\"fullproject.php?project=\"" 
      . urlencode($row2['projectname']) . "\">"
      . htmlentities($row2['projectname']) . "</a>\n";
   echo "<br /><em>" . $row2['description'] . "</em></li>";
}
echo "</ul>";
echo "</div>";
echo“\n”;
回声“
    \n”; 而($row2=mysql\u fetch\u assoc($result2)){ 回声“
  • \n”; echo“
    .”$row2['description']。“
  • ”; } 回声“
”; 回声“;
在fullproject.php中

<?php
session_start(); 
$projectname= $_SESSION['projectname'];

// Connect to server.
require ("connect.php");

$sql1="SELECT projectsid, projectname, programme, difficult, requirements,
    resources, description, contact, gsize, size 
    FROM projects WHERE projectname = '$projectname'";
$result1=mysql_query($sql1);    

while($row1 = mysql_fetch_assoc($result1)) {
echo "Project Name: " . $row1['projectname']. "<br />";
echo "Programme : " . $row1['programme'] . "<br />";
echo "Difficult : " . $row1['difficult'] . "<br />";
echo "Requirements : " . $row1['requirements'] . "<br />";
echo "Resources : " . $row1['resources'] . "<br />";
echo "Description : " . $row1['description'] . "<br />";
echo "Contact : " . $row1['contact'] . "<br />";
echo "Group size : " . $row1['gsize'] . " " . $row1['size'] . "<br />";
echo "<br /> ";
}
$project_id=$_GET['project_id'];
<?php
session_start(); 
require ("connect.php");
$projectname= mysql_real_escape_string($_GET['projectname']);

谢谢你的回复,我按照你的建议做了,但是当我点击一个链接时,它不起作用。点击链接后,URL会显示什么<代码>http://path/fullproject.php?project_id=5
对于任何链接,它都不会更改。您是否在DB中有project_id字段或获取projectName
echo”“;然后在fullProject.php页面$projectName=$\u GET['projectName']