2011-02-11 142 views
2

我试图使用PHP和MySQL把我的第一个动态的网站上显示来自MySQL数据库的内容 - NUBE中心!帮助与ID

我在构建数据库和插入数据还算不错的枪。现在我想在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

让“destringify”你的id值。如果id的数据类型是数据库中的整数,则不需要围绕该变量的单引号。 – 2011-02-11 00:41:41

+0

感谢百万@cyberkiwi - 我做到了这一点,我得到“错误在查询:选择名称,地址从Tiebel_Gardens_Homes WHERE id =。你的SQL语法有错误;检查对应于你的MySQL服务器版本的手册语法使用附近''在第1行:(:) – JamesL 2011-02-11 00:48:43

回答

0

我猜ID是数字,所以下降的报价

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


“查询错误:SELECT名称从Tiebel_Gardens_Homes地址在ID =。

对于这一个,你需要

  1. 从GET/POST参数得到ID
  2. 妥善处理未设置标识

所以我会做到这一点

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

感谢cyberkiwi - 我将它更改为 – JamesL 2011-02-11 00:45:19

0

您可能试图采取advant年龄'register_globals',不是一个好的举措。另外,如果这样做,我可以使用“http:// localhost:8888/test/tiebel/story.php?id = 1; drop table garden”来清除数据库。

值“身份证”是可用的,如$ _GET [“身份证”],但我会进一步做这样的事情:

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

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

如果任何不是一个号码(或至少,不以数字开头)被附加到URL,它将被转换成整数,失败和显示为0,这被检查。

由于对方回答说,如果它是一个简单的数字,你不需要周围的引号,但也需要一些保障,否则可能是“....?ID = ID”,这结束了作为SELECT Name, Address FROM garden WHERE id=id(选择所有行)。

0

如果我理解正确的话你问:

当ID = ##在你的网址,你设置一个$ _GET值。尝试:

$id = $_GET['id']; 

查询之前。