【问题标题】:PHP update using input value使用输入值更新 PHP
【发布时间】:2015-05-04 14:32:18
【问题描述】:

我不断收到以下错误,无法弄清楚出了什么问题。

注意:未定义索引:第 99 行 C:\xampp\htdocs\FYP\resProcessing.php 中的名称

错误与以下行有关:

$name = $_POST['name'];

以下是我的代码:

if ($quick_check != 0){
    while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){

        $id = $row['id'];
        $tablenum = $row['tablenum'];
        $avail = $row['avail'];

        $spots .= 'You just reserved table '.$tid.'.<br />';
        $spots .= 'You only have 8 minutes to finish or your reservation will expire and the table will open up to other people.<br />';
    }

    $availNow = $avail - $num;

    $sql = "UPDATE available SET avail='$availNow' WHERE id='$id' LIMIT 1";
    $query = mysqli_query($connect, $sql);

    $sql = "INSERT INTO reserves(tablenumber,numseats,restime) VALUES ('$tablenum','$num',now())";
    $query = mysqli_query($connect, $sql);

    $reserveID = mysqli_insert_id($connect);
    $spots .= '<form name="confirmform" id="confirmform" method="post" onSubmit="return false;">';
    $spots .= 'Full Name: &nbsp;<input type="text" name="name" id="name" required autofocus placeholder="Your Name" pattern="[a-zA-Z]+{3,}" title="Please enter your full name."></br>';

    // hidden field holds the table name
    $spots .= '<input id="tableNumber" type="hidden" value="'.$tablenum.'">';
    // hidden field holds the number of seats
    $spots .= '<input id="numSeats" type="hidden" value="'.$num.'">';
    // hidden field holds the reserve insert id
    $spots .= '<input id="reserveID" type="hidden" value="'.$reserveID.'">';

    // On submit call js function
    $spots .= '<button id="confirmbtn" onClick="confirmSeats();updateInfo();">Make Reservations</button></br>';

    $name = $_POST['name'];

    $sql = "UPDATE available SET name='$name' WHERE id='$id' LIMIT 1";
    $query = mysqli_query($connect, $sql);

    $spots .= '</form>';
    $spots .= '<button id="cancelbtn" onClick="cancelReserve('.$reserveID.')">Cancel Reservation</button>';


} else {
    $spots .= "Sorry, someone just reserved those. Try another table";
    $reserveID = "open";
}           

echo "$spots|$reserveID";
exit();
}

如果有人可以提供帮助,我将不胜感激。谢谢!

【问题讨论】:

标签: php input


【解决方案1】:

原因是POST请求不包含name参数。

或者在您的情况下,HTTP 请求类型不是 POST。

试试$name = $_REQUEST['name'];——它也会考虑 GET 变量(和 cookie)。 如果没有帮助,请修复您的客户端(无论是 HTML 表单、JavaScript 还是其他)。

您也可以在尝试访问之前检查 POST 变量是否已定义,例如:

if (isset($_POST['name']))
{ 
    $name = $_POST['name'];
} 
else 
{ 
    echo "Name is required"; 
    // ...
}

【讨论】:

  • POST 变量未按定义注册。我尝试在提交按钮之后放置以下内容,但仍然没有运气: $name = $_POST['name']; $sql = "更新可用 SET name='$name' WHERE id='$id' LIMIT 1"; $query = mysqli_query($connect, $sql);你知道我哪里错了吗?我对 php 比较陌生。
  • 您似乎只是不发送来自 HTML 表单的 POST 变量。 1. 检查表单的方法是否为post,即:&lt;form method="post" ...&gt; 2. 检查表单是否包含名称为name 的输入,即&lt;input name="name" ...&gt;
【解决方案2】:

信息:

听起来$_POST['name'] 没有定义。您应该验证它是否是,如果不是,您应该有一些逻辑来处理这种情况。您可以使用 PHP isset() 来检查 $_POST['name'] 是否“已设置”。

警告:

其他人可能会建议使用$_REQUEST,以防您的变量也可能设置为$_GET,但您应该了解RESTful API 的工作原理,然后再退回使用$_REQUEST,因为可能会有业务可能受到影响的逻辑和/或安全注意事项。

奖金:

您可能还想看看一些 PHP 框架,例如 Laravel

【讨论】:

    猜你喜欢
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    相关资源
    最近更新 更多