【问题标题】:"undefined variable" error message in database form submission [duplicate]数据库表单提交中的“未定义变量”错误消息[重复]
【发布时间】:2013-12-09 02:21:16
【问题描述】:

我已经在我的网站上建立了一个提交表单。输入表单的信息存储在数据库中,照片存储在服务器上的文件夹中,图像的链接存储在数据库中。

我的代码基于我在课堂上的一个完美运行的示例。但是,当表单加载时,我收到以下消息

注意:未定义变量:第 28 行 C:\HTML\mgertenbach\BAND\submitband.php 中的名称

注意:未定义变量:C:\HTML\mgertenbach\BAND\submitband.php 中第 28 行的照片

注意:未定义变量:C:\HTML\mgertenbach\BAND\submitband.php 中第 28 行的 Bio

注意:未定义变量:C:\HTML\mgertenbach\BAND\submitband.php 中第 28 行中的城市

注意:未定义变量:C:\HTML\mgertenbach\BAND\submitband.php 中第 28 行的状态

注意:未定义变量:第 28 行 C:\HTML\mgertenbach\BAND\submitband.php 中的邮政编码

注意:未定义变量:第 28 行 C:\HTML\mgertenbach\BAND\submitband.php 中的流派

注意:未定义变量:第 28 行 C:\HTML\mgertenbach\BAND\submitband.php 中的链接

我尝试过的任何方法都无法使页面正常工作,我无法找出我的代码存在的问题。

谢谢!

$dbc=mysql_connect('localhost', 'mgertenbach', 'mollyr');
mysql_select_db('mgertenbach', $dbc);

$problem = FALSE;
if (!empty($_POST['bandname']) && !empty($_POST['bandbio']) && !empty($_POST['bandcity']) && !empty($_POST['bandstate']) && !empty($_POST['bandzipcode']) && !empty($_POST['bandgenre']) && !empty($_POST['bandlink'])) {
    $Name = trim(strip_tags($_POST['bandname']));
    $Bio = trim(strip_tags($_POST['bandbio']));
    $City = trim(strip_tags($_POST['bandcity']));
    $State = trim(strip_tags($_POST['bandstate']));
    $Zipcode = trim(strip_tags($_POST['bandzipcode']));
    $Genre = trim(strip_tags($_POST['bandgenre']));
    $Link = trim(strip_tags($_POST['bandlink']));
}else {
if (!$problem) {
    $query = "INSERT INTO band_information (Name, Photo, Bio, City, State, Zipcode, Genre, Link) 
            VALUES ('$Name', '$Photo', '$Bio', '$City', '$State', '$Zipcode', '$Genre', '$Link');";
    if($_SERVER['REQUEST_METHOD']=='POST'){
        if(move_uploaded_file($_FILES['thefile']['tmp_name'], "C:\\HTML\\mgertenbach\\BAND\\photos\\{$_FILES['thefile']['name']}") && @mysql_query($query, $dbc)){
            print '<p>Thanks for submitting your band!</p>';
        } else {
            print '<p>Could not submit band because: <br/>' .
            mysql_error($dbc) . '</p>';
        }
    }
else {

?>
    
    <h3>Please fill out the following information.</h3>
    
    <form action="submitband.php" method="post">
        <fieldset><legend>Who Are You?</legend>
            <label>Band Name: <input type="text" id="bandname" name="bandname" size="10"/></label>
            <br/><br/>
            <label>Upload Photo*: <input type="file" id="bandphoto" name="bandphoto"/></label>
            <br/>&nbsp;&nbsp;&nbsp;*image must be a square file
            <br/><br/>
            <label>Enter a short bio: <br/><textarea id="bandbio" name="bandbio" cols="40" rows="10"></textarea></label>
        </fieldset>
        <br/><br/> 
        <fieldset><legend>Where Are You From?</legend>
            <label>City: <input type="text" id="bandbio" name="bandcity" size="10"/></label>
            <br/><br/>
            <label>State: 
                <select id="bandstate" name="bandstate">
                        <option value=""> </option>
                        <option value="AL">Alabama</option>
                        <option value="AK">Alaska</option>
                        <option value="AZ">Arizona</option>
                        <option value="AR">Arkansas</option>
                        <option value="CA">California</option>
                        <option value="CO">Colorado</option>
                        <option value="CT">Connecticut</option>
                        <option value="DE">Delaware</option>
                        <option value="DC">District Of Columbia</option>
                        <option value="FL">Florida</option>
                        <option value="GA">Georgia</option>
                        <option value="HI">Hawaii</option>
                        <option value="ID">Idaho</option>
                        <option value="IL">Illinois</option>
                        <option value="IN">Indiana</option>
                        <option value="IA">Iowa</option>
                        <option value="KS">Kansas</option>
                        <option value="KY">Kentucky</option>
                        <option value="LA">Louisiana</option>
                        <option value="ME">Maine</option>
                        <option value="MD">Maryland</option>
                        <option value="MA">Massachusetts</option>
                        <option value="MI">Michigan</option>
                        <option value="MN">Minnesota</option>
                        <option value="MS">Mississippi</option>
                        <option value="MO">Missouri</option>
                        <option value="MT">Montana</option>
                        <option value="NE">Nebraska</option>
                        <option value="NV">Nevada</option>
                        <option value="NH">New Hampshire</option>
                        <option value="NJ">New Jersey</option>
                        <option value="NM">New Mexico</option>
                        <option value="NY">New York</option>
                        <option value="NC">North Carolina</option>
                        <option value="ND">North Dakota</option>
                        <option value="OH">Ohio</option>
                        <option value="OK">Oklahoma</option>
                        <option value="OR">Oregon</option>
                        <option value="PA">Pennsylvania</option>
                        <option value="RI">Rhode Island</option>
                        <option value="SC">South Carolina</option>
                        <option value="SD">South Dakota</option>
                        <option value="TN">Tennessee</option>
                        <option value="TX">Texas</option>
                        <option value="UT">Utah</option>
                        <option value="VT">Vermont</option>
                        <option value="VA">Virginia</option>
                        <option value="WA">Washington</option>
                        <option value="WV">West Virginia</option>
                        <option value="WI">Wisconsin</option>
                        <option value="WY">Wyoming</option>
                    </select></label>  
            <br/><br/>
            <label>Zipcode: <input type="text" id="bandzipcode" name="bandzipcode" size="10"/></label>
        </fieldset>  
        <br/><br/>
        <fieldset><legend>What's Your Music Like?</legend>
            <label>Genre: 
                <select id="bandgenre" name="bandgenre">
                        <option value="country">Country</option>
                        <option value="electronic">Electronic</option>
                        <option value="folk">Folk</option>
                        <option value="indie">Indie</option>
                        <option value="punk">Punk</option>
                        <option value="rock">Rock</option>
                </select>
                </label>
            <br/><br/>
            <label>Share a link to where we can hear it: <input type="text" id="bandlink" name="bandlink" size="40"/></label>
        </fieldset>
        <br/><br/>
        <input type="submit" value="submit"/>          
    </form>
<?php
    }
}
}
?> 

【问题讨论】:

  • if(isset($_POST['blah']))...

标签: php html database forms form-submit


【解决方案1】:

您正在测试是否存在各种 $_POST 变量,如果您找到了所有变量,则针对它们设置一些局部变量。

如果你没有找到它们,你继续尝试将信息写入数据库。

仔细研究您的if...then...else 应该如何工作。

旁注:

  • mysql_*() 函数已弃用。不要使用它们。请改用mysqli_*()PDO

  • 您正在使用trim(strip_tags()) 作为某种形式的清理。这还远远不够好。你应该使用mysql_real_escape_string()(对于mysql),或者考虑转移到prepared statements。

【讨论】:

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