繁体   English   中英

通过ID帮助显示MySQL数据库中的内容

[英]Help with displaying content from MySQL db by id

我正在尝试使用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

我想ID是数字的,所以请删除引号

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


“查询错误:SELECT名称,地址来自Tiebel_Gardens_Homes,WHERE id =。

为此,您需要

  1. 从GET / POST参数获取ID
  2. 优雅地处理未提供ID的地方

所以我会这样做

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

您可能正在尝试利用' register_globals '的优势,而不是一个好举动。 另外,如果可以的话,我可以用“ http:// localhost:8888 / test / tiebel / story.php?id = 1;删除表花园”来丢弃数据库。

值'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 (选择所有行)。

如果我正确理解您的要求:

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

$id = $_GET['id'];

在查询之前。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM