[英]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 =。
为此,您需要
所以我会这样做
$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.