我在mysql db中有一个页面表,其中包含'page_name','title',content,'author'字段。我想用像http://www.domain.com/index.php?page=page_name这样的php来获取它。我该怎么做 ?请帮忙
答案 0 :(得分:4)
使用超级全局$ _GET数组访问GET参数:
$pagename = $_GET['page'];
然后为数据库编写查询。请注意,您必须转义来自外部的每个数据:
$sql = "SELECT * FROM page_table WHERE page_name = '%s' LIMIT 1";
$sql = sprintf(%sql, mysql_real_escape_string($pagename));
然后执行查询并检查它是否有效。
$result = mysql_query($sql);
if(!$result) {
// error occured
}
使用函数mysql_fetch_assoc
访问数据:
$data = mysql_fetch_assoc($result);
您现在可以访问此关联数组中的所有数据:
echo $data["title"];
答案 1 :(得分:1)
$_GET
数组答案 2 :(得分:1)
你可以这样做:
<?php
// get page
$page_name = $_GET["page"];
// Do the query
$q = mysql_query("SELECT * FROM `pages_table` WHERE `page_name` LIKE '$page_name'");
// loop the get the results
while($result = mysql_fetch_assoc($q){
$db_title = $result["title"];
$db_content = $result["content"];
$db_author = $result["author"];
}
//put the data together and echo
echo "
<h1>$db_title</h1>
<p>$db_content</p>
<h3>Author: $db_author</h3>
";
?>
不要忘记先连接数据库!并对$_GET[]
进行一些sql注射检查!!
修改强>
取决于你的PHP安装。如果您没有启用魔术引号,则可以在执行查询时执行类似$page_nameClean = addslashes($page_name);
的操作,或者如果您知道只使用数字来获取页面(例如:domain.com?page=1232
)可以检查一下:
if(is_numeric($page_name)){
// get the page out of the DB
}else{
// Show an error message
}
或者看看这个:avoid code injections