通过查询字符串传递变量(php)

时间:2013-11-08 20:34:36

标签: php arrays variables

我正在通过在线课程慢慢学习PHP。特别的练习是这样的:

html页面:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>Greeting the Beatles</title>
</head>
<body>
    Choose a Beatle to greet.
    <ul>
    <li><a href="HelloWho.php?Beatle=Paul">Paul</a></li>
    <li><a href="HelloWho.php?Beatle=John">John</a></li>
    <li><a href="HelloWho.php?Beatle=George">George</a></li>
    <li><a href="HelloWho.php?Beatle=Ringo">Ringo</a></li>
    </ul>
</body>
</html>

相应的php页面:

<?php
$beatle = $_GET['Beatle'];
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>Hello <?php echo $beatle ?>!</title>
</head>
<body>
<?php
    echo "Hello $beatle!";
?>
</body>
</html>

我的代码与上面的代码相同,但我一直在得到一个页面,说我在第2行有一个未定义的索引:

Notice: Undefined index: Greet in /Applications/XAMPP/xamppfiles/htdocs/Webucator/ClassFiles/Webucator/ClassFiles/PHPBasics/Exercises/HelloWho.php on line 2
World!

我意识到这是一个愚蠢的问题,但我还没有看到它的答案,除了isset()函数,我还没有学到它。

1 个答案:

答案 0 :(得分:0)

您发布的代码确实可以正常运行,并且不会提供您发布的错误。

阅读错误说明可以轻松解决您的问题。它说第2行有一个未定义的索引“Greet”。

确保您副本中的第2行与工作版本

相同
$beatle = $_GET['Beatle'];

如果你仔细研究它是如何工作的,你会看到你传递数据的网址是

HelloWho.php?Beatle=NameGoesHere

PhP文件能够从

获取数据
?Beatle=

使用

$_GET['Beatle']

并将其存储在第二行中的变量中

$beatle = $_GET['Beatle'];

此外,我知道你说你还没有学习它,但你可以使用isset()检查字符串是否存在

if (isset($_GET['Beatle'])) {
    $beatle = $_GET['Beatle'];
    echo "Hello $beatle!";
}