0

基本上我已经创建了两个 php 文件。一个人选择了我的整个表格,并从中只显示日期和 ID 号。每个日期都有一个指向 display.php 文件的链接。它将 ID 号连同它一起拉到下一个 display.php 页面。我想在 display.php 文件上做的是使用该 PHP 显示整行。

所以我知道这Select * from tablename WHERE id=1会提取这些数据,但是如何将 ID 号放入那里的WHERE语句中?

这是主页代码:

// SQL 查询 $strSQL = "SELECT * FROM table1";

// Execute the query (the recordset $rs contains the result)
$rs = mysql_query($strSQL);

// Loop the recordset $rs
            while($row = mysql_fetch_array($rs)) {

               // DATE
              $strName = $row['date'];

               // Create a link to display.php with the id-value in the URL
               $strLink = "<a href = 'display.php?ID = " . $row['ID'] . "'>" . $strName . "</a>";

                // List link
               echo "<li>" . $strLink . "</li>";


  }

该代码链接有效并转到 display.php。我将如何使用 ID 号与它一起创建链接。我会使用 post 命令吗?

$id= Post['id'] 
then WHERE id = '$id'

?

TBH 我确实尝试过,但一无所获。有什么建议么?

现在使用 GET ......仍然不走运我已经尝试了 GET 语句。在我的地址栏中,它显示了 ID 号。所以我看到身份证号码随之而来。我什至尝试只是回显 ID,看看是否只是我的代码搞砸了。

<?php 
    $dbhost = 'localhost';
    $dbuser = 'myusername';
    $dbpass = 'mypw';
    $dbname = 'mydbname';
    $id = $_GET['id'];
    mysql_connect($dbhost, $dbuser, $dbpass) or die('MySQL connect failed. ' . mysql_error());
    mysql_select_db($dbname) or die('Cannot select database. ' . mysql_error());
?>


<body>
ID #<?php  echo $id ?>
</body>
</html>

<body>
ID #<?php  echo $id ?>
</body>
</html>

仍然没有运气

4

2 回答 2

0

在查询字符串中传递的值使用 GET 而不是 POST。

Post 用于表单变量。

从查询字符串中获取值时,您还应该注意 SQL 注入攻击的危险。

于 2012-08-13T17:47:56.200 回答
0

所以在你的显示文件中你会做这样的事情

$id = $_GET['ID'];

//DO SANITIZATION ETC ON THE ID HERE TO MAKE SURE ITS SOMETHING WE EXPECTED (AN INT)

$sql = "SELECT STUFF WHERE ID = {$id}"; //FOR BREVITY SAKE DOING AWAY WITH SECURITY 

所以基本上你的第一个脚本正在做的是在 url 查询字符串中传递 id,这里传递的值可以在$_GET超级全局数组中访问。

您在此处访问的任何内容和其他超级全局变量都应该被视为对您的应用程序完全危险。您应该过滤并从中逃脱,然后在将其插入数据库之前,您必须使用正确的数据库机制对其进行转义。否则,您将面临 SQL 注入攻击。

于 2012-08-13T17:53:24.253 回答