【问题标题】:Notice: Undefined variable: in C:\xampp\htdocs\imp02\week5\firstPHPDatabase.php on line 25注意:未定义的变量:在第 25 行的 C:\xampp\htdocs\imp02\week5\firstPHPDatabase.php
【发布时间】:2014-01-05 04:46:26
【问题描述】:

我需要从 MySQL 数据库中插入和提取数据。我能够提取信息,但是当我尝试插入它时,它给了我很多错误消息。其中大部分我都能解决,但我似乎无法弄清楚这一点:

Notice: Undefined variable: emailInput in C:\xampp\htdocs\imp02\week5\firstPHPDatabase.php on line 25
Notice: Undefined variable: aanmelding in C:\xampp\htdocs\imp02\week5\firstPHPDatabase.php on line 25
Notice: Undefined variable: ipadres in C:\xampp\htdocs\imp02\week5\firstPHPDatabase.php on line 25
Notice: Undefined variable: opmerkingen in C:\xampp\htdocs\imp02\week5\firstPHPDatabase.php on line 25
Notice: Undefined variable: aantalPersonen in C:\xampp\htdocs\imp02\week5\firstPHPDatabase.php on line 25

我的代码:

<?php
$databaseLink = mysqli_connect('localhost', 'root', '', 'newyearseveparty');
if (mysqli_connect_error())
    echo mysqli_connect_error();

$selectorQuery = "SELECT * FROM attendants";
echo "The query We use is $selectorQuery!";
$attendants = array();
if ($result = mysqli_query($databaseLink, $selectorQuery)) {
    while ($tableRow = mysqli_fetch_assoc($result)) {
        $attendants[] = $tableRow;
    }
} else {
    echo mysqli_error($databaseLink) . 'QUERY: ' . $$selectorQuery;
}
if (isset($_POST['value'])){
    $nameInput = $_POST['nameInput'];
    $emailInput = $_POST['emailInput'];
    $aanmelding = $_POST['aanmelding'];
    $ipadres = $_SERVER['REMOTE_ADDR'];
    $opmerkingen = $_POST['opmerkingen'];
    $aantalPersonen = $_POST['aantalpersonen'];
}
$sql = "INSERT INTO attendants (naam, email, komt, ipadres, opmerkingen, aantalpersonen)
VALUES('Justin', '$emailInput', '$aanmelding', '$ipadres','$opmerkingen', '$aantalPersonen')";

if (!mysqli_query($databaseLink,$sql))
{
    die('Error: ' . mysqli_error($databaseLink));
}
echo "1 record added";
mysqli_close($databaseLink);
?>
<!doctype html>
<html>
<head>
    <title></title>
    <meta name="description" content=""/>
    <meta charset="utf-8"/>
    <link rel="stylesheet" href=""/>
</head>
<body>
<?php

if (!empty($attendants)) {
    foreach ($attendants as $people) {
        echo '<ol>';
        echo 'Attendent';
        echo "<li>Naam: {$people['naam']}</li>";
        echo "<li>E-mail: {$people['email']}</li>";
        echo "<li>Komt: {$people['komt']}</li>";
        echo "<li>Datum van aanmelding: {$people['datum']}</li>";
        echo "<li>Ipadres: {$people['ipadres']}</li>";
        echo "<li>Eventuele opmerkingen: {$people['opmerkingen']}</li>";
        echo "<li>Aantal personen: {$people['aantalpersonen']}</li>";
        echo '</ol>';
    }
} else {
    echo "af er is iets fout gegaan, of er heeft nog niemand zich ingeschreven";
}
?>
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
    <fieldset>
        <label for="nameInput" class="labelstyle">Naam: </label>
        <input id="nameInput" name="inputFields" type="text" autofocus="auto"><br>
        <label for="emailInput" class="labelstyle">E-Mail</label>
        <input id="emailInput" name="inputFields" type="text"><br>
        <label for="aanmelding" class="labelstyle">Komt u, voor ja 1, voor nee 0</label>
        <input id="aanmelding" name="inputFields" type="text"><br>
        <label for="opmerkingen" class="labelstyle">opmerkingen</label>
        <input id="opmerkingen" name="inputFields" type="text"><br>
        <label for="aantalpersonen" class="labelstyle">aantal personen</label>
        <input id="aantalpersonen" name="inputFields" type="number"><br>
        <input type="submit" name="submit" value="submit">
    </fieldset>
</form>
</body>
</html>

我希望你们中的一些人能很好地帮助我

【问题讨论】:

  • 你甚至不应该从一开始就考虑构建 SQL;您将获得 SQL 注入。

标签: php mysql database phpmyadmin


【解决方案1】:

输入元素的名称将作为$_POST数组的键发布。所以像这样更改它或更改您的$_POST键。

<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
    <fieldset>
        <label for="nameInput" class="labelstyle">Naam: </label>
        <input id="nameInput" name="nameInput" type="text" autofocus="auto"><br>
        <label for="emailInput" class="labelstyle">E-Mail</label>
        <input id="emailInput" name="emailInput" type="text"><br>
        <label for="aanmelding" class="labelstyle">Komt u, voor ja 1, voor nee 0</label>
        <input id="aanmelding" name="aanmelding" type="text"><br>
        <label for="opmerkingen" class="labelstyle">opmerkingen</label>
        <input id="opmerkingen" name="opmerkingen" type="text"><br>
        <label for="aantalpersonen" class="labelstyle">aantal personen</label>
        <input id="aantalpersonen" name="aantalpersonen" type="number"><br>
        <input type="submit" name="submit" value="submit">
    </fieldset>
</form>

【讨论】:

【解决方案2】:

您不能使用元素的 id 访问 POST 元素。要以 $_POST['nameInput'] 访问元素,输入字段的 NAME 应该是 nameInput 例如:-

<input id="nameInput" name="inputFields" type="text" autofocus="auto"><br>

应该改为

<input id="nameInput" name="nameInput" type="text" autofocus="auto"><br>



如果您希望将表单提交到同一页面。您应该将 blank 形式的 action 属性 保留为 action=''

AND
您的提交按钮的名称是 'submit'。所以你应该像这样检查表单是否已提交isset($_POST['submit'])

【讨论】:

  • 好的,我做到了,但我仍然收到相同的错误未定义消息。知道我能做些什么来解决这个问题吗?
【解决方案3】:

使用 isset($_POST['value']) 处理情况

【讨论】:

    【解决方案4】:

    像这样使用:"$_POST[variableName]"; 不要给帖子中的变量加上单引号。

    【讨论】:

      【解决方案5】:

      您不能使用元素的id 访问POST 元素。要以$_POST['nameInput'] 访问元素,输入字段的name 应为nameInput

      例如:

      <input id="nameInput" name="inputFields" type="text" autofocus="auto"><br>
      

      应该改为

      <input id="nameInput" name="nameInput" type="text" autofocus="auto"><br>
      

      如果您希望将表单提交到同一页面。您应该将表单的 action 属性留空。 (如action=''

      提交按钮的name'submit'。所以你应该像这样检查表单是否已提交isset($_POST['submit'])

      【讨论】:

        猜你喜欢
        • 2015-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多