SQL WHERE ID遗留

时间:2012-08-13 17:44:13

标签: php sql

基本上我已经创建了两个php papes。一个选择我的整个表,并显示日期和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>

仍然没有运气

2 个答案:

答案 0 :(得分:0)

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

发布是表单变量。

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

答案 1 :(得分: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注入攻击持开放态度。