帮助显示来自MySQL db的内容

时间:2011-02-11 00:36:03

标签: php mysql

我正在尝试使用PHP和MySQL整合我的第一个动态网站 - nube central!

我在构建数据库和插入数据方面做得很好。现在我想在php / html模板中显示每行的内容。

我创建了一个php文件,列出了每一行都有一个story.php文件的链接:

<a href="story.php?id=<? echo $row->id; 
?>"><?

echo $row->Name; ?></a>

但是当我想构建story.php文件时,我在使用时遇到错误:

$query = "SELECT Name, Address FROM garden WHERE id ='$id'";

$result = mysql_query($query) or die ("Error in query: $query. " .

mysql_error());

例如,如果我硬编码WHERE id ='1'“,则显示该行正常,但使用'$ id'则不返回任何内容。

如何让它根据链接中的id返回行中的数据,即:

http://localhost:8888/test/tiebel/story.php?id=1

3 个答案:

答案 0 :(得分:0)

我猜ID是数字,所以删掉引号

$query = "SELECT Name, Address FROM garden WHERE id =$id";

<小时/>

  

“查询错误:SELECT Name,Address FROM Tiebel_Gardens_Homes WHERE id =。

对于这个,你需要

  1. 从GET / POST参数中获取ID
  2. 优雅地处理未提供ID的位置
  3. 所以我会这样做

    $id = $_GET['id'];
    if (!is_numeric($id)) { $id = 0; }
    $query = "SELECT Name, Address FROM garden WHERE id =$id";
    

答案 1 :(得分:0)

您可能正在尝试利用“register_globals”,而不是一个好的举措。此外,如果那个到位,我可以删除一个数据库:“http:// localhost:8888 / test / tiebel / story.php?id = 1; drop table garden”。

值'id'可用,如$ _GET ['id'],但我会进一步做这样的事情:

$id = isset($_GET['id']) ? int($_GET['id']) : 0;
if ($id == 0) {
   echo "problem with id";
   exit;
}

这确保变量是   a)实际上设置在第一位和   b)是一个数字。

如果任何不是数字(或者至少不以数字开头)的内容被附加到URL,它将被转换为整数,失败并显示为0,这将被检查。

正如另一个答案所说,如果它是一个简单的数字,你不需要它周围的引号,但这也需要一些安全性,否则它可能是'....?id = id',最终为SELECT Name, Address FROM garden WHERE id=id(选择所有行)。

答案 2 :(得分:0)

如果我理解你的要求:

当您的网址中的id = ##时,您正在设置$ _GET值。尝试:

$id = $_GET['id'];
在查询之前