我开始掌握Web开发的窍门。我遇到了一个小问题,如下所示:未定义的索引:用户名
我知道这是因为我正在使用 GET 但实际的 php 脚本有效并且对数据库进行了更改 - 这很好。不好的是向用户显示此错误的事实: 未定义的索引:用户名
这是我的代码:
<!doctype html>
<form id='register' action='changeticket.php' method='POST'>
<input type="hidden" name="username" value="<?php echo $_GET['username']; ?>" >
<fieldset >
<legend>Change ticket</legend>
<label for='ticket' >Proposed ticket request number: </label>
<input type='text' name='ticketValue' id='tickets' />
<input type='submit' name='Submit' value='Submit' />
</fieldset>
</form>
<?php
require "init.php";
if(!empty($_POST['ticketValue']) && !empty($_POST['username'])){
$ticketValue = $_POST['ticketValue'];
$stmt = "UPDATE ticketTable SET ticket = ? WHERE username = ?";
$result = $dbcon->prepare($stmt);
$result->bind_param('ss', $ticketValue, $username);
$result->execute();
echo "Ticket has been changed";
}
else{
echo "Not able to make changes sorry";
}
?>
我不想在单击提交后使参数在 url 中可见,所以我使用的是 POST。就像我说的那样它有效,但显示错误未定义的索引:用户名。
我该如何解决这个问题?
谢谢你
一种选择是使用 $_REQUEST 而不是 $_GET.$_REQUEST 同时具有两个变量(_GET 美元和 _POST 美元(
你忘了初始化$username..
<!doctype html>
<form id='register' action='changeticket.php' method='POST'>
<input type="hidden" name="username" value="<?php echo $_GET['username']; ?>" >
<fieldset >
<legend>Change ticket</legend>
<label for='ticket' >Proposed ticket request number: </label>
<input type='text' name='ticketValue' id='tickets' />
<input type='submit' name='Submit' value='Submit' />
</fieldset>
</form>
<?php
require "init.php";
if(!empty($_POST['ticketValue']) && !empty($_POST['username'])){
$ticketValue = $_POST['ticketValue'];
$username = $_POST['username'];
$stmt = "UPDATE ticketTable SET ticket = ? WHERE username = ?";
$result = $dbcon->prepare($stmt);
$result->bind_param('ss', $ticketValue, $username);
$result->execute();
echo "Ticket has been changed";
}
else{
echo "Not able to make changes sorry";
}
?>
由于您使用 POST 方法而不是 GET 方法来发送参数,因此您应该更改以下部分:
<input type="hidden" name="username" value="<?php echo $_GET['username']; ?>" >
自:
<input type="hidden" name="username" value="<?php echo $_POST['username']; ?>" >