我需要随机获取一个用户名并转到view.php?name=USERNAME
我错在哪里?
<form action="view.php?name=<?php $getname; ?>" method="get">
<input class="button" type="submit" name="submit" value="RANDOM SKIN" />
</form>
<?php
include('config.php');
if ($_POST['submit']) {
$sql1 = mysql_query("SELECT * FROM `skins` ORDER BY rand() limit 1") or die(mysql_error());
while ($row2 = mysql_fetch_assoc($sql1)) {
$getname = $row2['username'];
echo $getname;
}
}
?>
表单的方法设置为 GET,但您正在检查$_POST
。在表单中使用method="post"
,或在 PHP 代码中使用$_GET
。
除了在$_GET
和$_POST
之间交替的问题,如果你想从你的GET请求中保留你的键值对,这不是一个大问题。您有多种选择:
推荐
查看parse_url()
.这从 PHP 4 开始可用。该文档有很多示例:
$url = 'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
echo parse_url($url, PHP_URL_PATH);
另类
尝试对$_SERVER
变量进行var_dump()
。您应该能够看到可以使用$_SERVER['QUERY_STRING']
访问的QUERY_STRING
属性。在这里,您可以使用手动拆分键/值。你猜怎么着,还有一个功能!
退房: parse_str()
.你给它一个查询字符串,就像来自 GET 的查询字符串一样,它会为你整理出所有的键值。查看文档,它为您提供了以下示例:
$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
echo $first; // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz
真的很简单!尝试这两个功能 - 它们可以解决您的确切问题。为了使上述内容为您工作,我将首先尝试:
var_dump(parse_str($_SERVER['QUERY_STRING']));
最后,我将是讨论MySQL弃用的人。这是我复制/粘贴给新手的内容:
请不要在新代码中使用mysql_*
函数。它们不再维护,被正式弃用,并且在实时代码中可能很危险。看到红框了吗?请改为了解预准备语句,并使用 PDO 或 MySQLi - 本文将帮助您决定哪个语句。如果您选择PDO,这是一个很好的教程。