如何在动态网页中使用名称而不是id

时间:2015-10-08 14:11:03

标签: php mysql dynamic webpage

我刚开始学习php和mysql,我可能已经超越了自己。我想创建的是一个网页,其中人们可以注册一个活动,到目前为止,提交他们的名字,姓氏,年龄和电子邮件地址的表单正在工作,它实际上将信息发送到数据库

我要创建的下一件事是我可以显示所有提交的数据库记录的页面(电子邮件地址除外)。这也有效,但我想玩动态网址。

当我访问我的页面http://www.example.com/ppl.php?id=1时,我获得了显示的第一个数据库记录的信息,但我也想知道我是否可以使用名称而不是ID来使用,所以我尝试编辑我的代码并使用http://www.example.com/ppl.php?name=john这只会返回一个错误,但是在数据库中有一些名为john的人没有显示任何记录。

所以我想知道我想要的是否真的可行,以及如何使用我当前的代码。

<head>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "event";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
    $id = $_GET['id'];
    $firstname = 'firstname';
    $lastname = 'lastname';
    $age = 'age';

$sql = "SELECT * FROM people WHERE id = $id";

$result = $conn->query($sql);

    echo "<table id='display' width='600' align='center'>";
    echo"<tr><td>&nbsp;Firstname</td> <td>&nbsp;Lastname</td> <td>&nbsp;Age</td>";

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {

        echo"<tr><td width='33%'>&nbsp;$row[$firstname]</td> <td width='33%'>&nbsp;$row[$lastname]</td> <td width='33%'>&nbsp;$row[$age] cm</td></tr>";


    }
} else {
    echo "0 results";

}
$conn->close();
?>

2 个答案:

答案 0 :(得分:0)

尝试更改查询:

$sql = "SELECT * FROM people WHERE id = $id";

要:

$name = $_GET['name'];
$sql = "SELECT * FROM people WHERE name LIKE '%$name%'";

然后回复你找到的每个约翰。

还要考虑使用这样的CSS。

<style>
    #display {
        width: 600px;
    }
    #display td {
        width: 33%;
    }
</style>

答案 1 :(得分:0)

您应该查找两个单独的<function get_random_string at 0x1034f7848>键:$_GETid

name

我建议使用<?php if (isset($_GET['id'])) { // logic to get row by ID } elseif (isset($_GET['name'])) { // logic to get row by Name } else { // logic if no $_GET keys are set } 字段进行查找,因为它不是数据库中的主键 - 它可能不是唯一的。您的查询可能会返回多个结果,具体取决于存储的数据。

修改:要回答上面代码示例中 where 的问题,请考虑将其放在声明查询字符串的位置。

name

从那里你可以保持相同的查询执行逻辑。但正如我所说,我建议不要使用<?php if (isset($_GET['id'])) { $id = $_GET['id']; $sql = "SELECT * FROM people WHERE id = $id"; } elseif (isset($_GET['name'])) { $name = $_GET['name']; $sql = "SELECT * FROM people WHERE name = '$name'"; } 字段作为密钥,因为它可能不是唯一的。