我正在尝试使用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
答案 0 :(得分:0)
我猜ID是数字,所以删掉引号
$query = "SELECT Name, Address FROM garden WHERE id =$id";
<小时/>
“查询错误:SELECT Name,Address FROM Tiebel_Gardens_Homes WHERE id =。
对于这个,你需要
所以我会这样做
$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'];
在查询之前。