2011-04-16 92 views

回答

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); 

您现在可以访问这个asscociative阵列中的所有数据:

echo $data["title"]; 
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

+1

如何执行在$ _GET []检查?你能给我示例代码吗? – ktm 2011-04-16 11:40:18