PHP-如何创建动态URL?

PHP-如何创建动态URL?,php,mysql,url,dynamic,Php,Mysql,Url,Dynamic,我已经在网上搜寻了关于这个简单任务的教程,但是没有用。所以我转向你们这些乐于助人的同志们。以下是我需要做的: 我有一个带有事件表的MySQL数据库。我需要创建一个包含事件标题列表的PHP网页,每个标题都必须是指向事件完整细节的链接。但我希望避免为每个事件创建静态页面,主要是因为我不希望数据输入志愿者必须创建这些新页面。(是的,我意识到静态页面对SEO更友好,但为了效率起见,我需要放弃这种做法。) 我见过PHP url语法如下所示: pagename.php?id=20 但我不知道如何让它工作

我已经在网上搜寻了关于这个简单任务的教程,但是没有用。所以我转向你们这些乐于助人的同志们。以下是我需要做的:

我有一个带有事件表的MySQL数据库。我需要创建一个包含事件标题列表的PHP网页,每个标题都必须是指向事件完整细节的链接。但我希望避免为每个事件创建静态页面,主要是因为我不希望数据输入志愿者必须创建这些新页面。(是的,我意识到静态页面对SEO更友好,但为了效率起见,我需要放弃这种做法。)

我见过PHP url语法如下所示:

pagename.php?id=20
但我不知道如何让它工作

非常感谢您的帮助

谢谢

基普


在您的示例中,
$foo
将=20

这是基本的php。您只需在写入页面标题之前查询数据库中的事件详细信息,并相应地编写html

我想问你的第一件事是你是否知道如何连接到你的数据库。从那里,您可以根据$_GET['id']值进行查询,并使用结果填充html

不客气,但问题本身表明您是PHP新手,对吗?因此,为了提供一个有效的解决方案,我们可能想知道你到底走了多远

此外,您还可以使用apache的mod_rewrite重写动态URL,使其看起来像静态URL。如果你对“漂亮”的url感兴趣,这可能是新手级别的东西

修改后的答案:

在循环中,您将使用查询结果中的id(假设您的主键是id)


不要忘了查看mysql\u real\u escape\u string()以清除条目。

使用
$\u GET
变量时要格外小心,因为恶意用户很容易修改它们

按照下面的示例,您可以执行以下操作:

 $foo = (int)$_GET['id'];

因此,我们在这里强制将变量强制转换为整数,以便确定数据的性质,这通常是用来避免的。

假设您有php文件test.php

<?php
$conn = mysql_connect("localhost", "root", "");
mysql_select_db("db", $conn);
$id = $_GET['id'];
$sql = "select * from table where id = $id";
$result = mysql_query($sql, $conn);

if ($result){
    $row = mysql_fetch_row($result);
    $title = $row[0];
    $content = $row[1];
    }
?>

<html>
    <head>
    <title><?php echo $title ?></title>
    </head>
    <body>
        <h1><?php echo $title ?></h1>
        <p><?php echo $content ?></p>
    </body>
</html>


动态页面类似于..

以下是相关代码,用于从名为calendar的表中提取11月份的事件列表,每个事件都有一个指向名为event.php的页面的链接,并将事件的id字段附加到url的末尾:

$result = mysql_query("SELECT * FROM calendar WHERE sort_month='11'");  
while($row = mysql_fetch_array($result))  
{echo  
"<a href='event.php?id=".$row['id']."'>".$row['event_name']."</a>"  
;}  
$result=mysql\u query(“从日历中选择*,其中排序\u month='11'”);
while($row=mysql\u fetch\u数组($result))
{回声
""  
;}  
下面是event.php页面上的相关代码。请注意,括号中的行号取决于这些行在表中的位置,请记住,第一行(字段)括号中的数字为0:

$id = $_GET['id'];  
$sql = "select * from calendar where id = $id";  
$result = mysql_query($sql, $con);  
if ($result){  
$row = mysql_fetch_row($result);  
$title = $row[12];  
$content = $row[7];  
}  
?>  

<html>  
<head>  
<title><?php echo $title ?></title>  
</head>  
<body>  
<h1><?php echo $title ?></h1>  
<p><?php echo $content ?></p>  
</body>  
</html>  
$id=$\u GET['id'];
$sql=“从日历中选择*,其中id=$id”;
$result=mysql\u查询($sql,$con);
如果($结果){
$row=mysql\u fetch\u row($result);
$title=$row[12];
$content=$row[7];
}  
?>  


这对我来说很有用,多亏了上面的帮助。

mysql\u real\u escape\u string()也会帮助静态页面不太利于SEO。谷歌不在乎这个页面是如何形成的,它只是一个页面上的文本。通过将URL重写为
page-20.html
,你可以使你的“动态”页面看起来像一个静态页面。哦……我想我的评论是没有意义的。你覆盖了所有的基地。荣誉+你不粗鲁——我是新手。这就是我目前得到的:$result=mysql\u query(“SELECT*FROM calendar,其中sort\u month='04'和published='1'ORDER BY day+0”);虽然($field=mysql_fetch_array($result)){echo“

”、“$field['day']”、“$field['year']”、“

”、“$field['event_name']。”;}我想在上面的行周围放置一个动态链接,链接到一个动态创建的页面。我如何使用$_GET['id']来实现这一点?KipExcuse我上面评论的无格式外观。对于这个论坛来说还是新鲜事。显然,你会使用我们的答案和评论中找到的方法来逃避$_GET['id']值。我的每个事件标题上指向这个test.php页面的链接是否都是,例如,
test.php?id=20
,id号是该特定事件的id号?在代码的第5行中,
table
是唯一需要替换的单词-用表的实际名称-正确吗?除了前三行中需要替换的单词,文件中还有其他单词吗?谢谢是的。。嗯,这取决于你希望你的页面看起来像什么,呵呵。这只是一个简单的例子
resultado
??我在最后四行以
if
开头的php中遇到了问题。我将
resultado
更改为
result
,但仍然收到一个错误。当我注释掉这四行并用一个简单的echo hello world替换它们时,错误消失了。你是对的,它的结果而不是resultado。而
if
上缺少一个括号。刚刚编辑了answear。。。
<?php
$conn = mysql_connect("localhost", "root", "");
mysql_select_db("db", $conn);
$id = $_GET['id'];
$sql = "select * from table where id = $id";
$result = mysql_query($sql, $conn);

if ($result){
    $row = mysql_fetch_row($result);
    $title = $row[0];
    $content = $row[1];
    }
?>

<html>
    <head>
    <title><?php echo $title ?></title>
    </head>
    <body>
        <h1><?php echo $title ?></h1>
        <p><?php echo $content ?></p>
    </body>
</html>
$result = mysql_query("SELECT * FROM calendar WHERE sort_month='11'");  
while($row = mysql_fetch_array($result))  
{echo  
"<a href='event.php?id=".$row['id']."'>".$row['event_name']."</a>"  
;}  
$id = $_GET['id'];  
$sql = "select * from calendar where id = $id";  
$result = mysql_query($sql, $con);  
if ($result){  
$row = mysql_fetch_row($result);  
$title = $row[12];  
$content = $row[7];  
}  
?>  

<html>  
<head>  
<title><?php echo $title ?></title>  
</head>  
<body>  
<h1><?php echo $title ?></h1>  
<p><?php echo $content ?></p>  
</body>  
</html>