我希望我的php查询显示用户名,并带有指向用户个人资料的链接。
<?php
$get_items = "SELECT * FROM items WHERE category='test'";
$result = mysql_query($get_items);
while($item = mysql_fetch_array($result, MYSQL_ASSOC)){
$creator = $item['created_by'];
echo "<b>Seller: </b>"."<a href='userprof.php?id=$creator'>$creator</a>";
}
?>
点击此链接可将其转到我创建的用户个人资料页面。但我希望“userprof.php?id = $ creator”知道哪个用户显示帐户信息。这是最好的方法吗?如何阅读网址并显示正确的信息?
答案 0 :(得分:2)
<?php
$userId = $_GET['id'];
$sql = "SELECT * FROM user WHERE id = " . intval($userId);
$result = mysql_query($sql);
...
答案 1 :(得分:0)
您正在发送GET变量。
$id = $_GET['id']; // Contains whatever was in $creator;
答案 2 :(得分:0)
使用$_GET
从URL获取变量。
就像在你的代码中你想要访问用户配置文件然后从url获取用户ID
像
http://localhost/test/user_profile.php?uid=2
这里的url uid是2,它是你的用户ID。 您可以使用代码
获取此ID$user_id = $_GET['uid'];
在查询中使用此变量。
答案 3 :(得分:0)
OMG !!令人难以置信的PHP!它扼杀了我的眼睛!!
这些人,他们都没有做出正确的事情:
intval()
和addslashes()
!! mysql_real_escape_string()
具有脆弱性,也不应使用。这是正确的方法:
<?php
if (!filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT))
{
trigger_error('Invalid User ID. It must be an integer (number).', PHP_USER_ERROR);
exit;
}
$userId = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT);
$sql = "SELECT * FROM user WHERE id = ?";
$pdo = new PDO('mysql:host=localhost;db=mydb', $dbUsername, $dbPassWord);
$statement = $pdo->prepare($sql);
$statement->execute(array($userId));
$result = $statement->fetch(PDO::FETCH_ASSOC);
这是100%安全的。我希望人们既不会投票,也不会降低我的答案。糟糕的代码是如此系统化,我们只需要从屋顶大喊大叫,直到新人开始正确学习它,否则PHP作为专业语言会受到严重损害。