PHP未定义变量错误,但已定义

y0

我正在尝试select使用数据库的元素填充a ,但是选择始终为空。我独立尝试了PHP部分,并且可以正常工作。

我总是得到同样的错误:Undefined variable: countries<select>行。但是,它的定义是,首先是因为它被设置为空字符串,其次是因为正如我所说,数据的连接和检索正在正常进行。

那么可能是什么问题呢?

<?php
        #Connection with the database
        try{
            $db = new PDO('mysql:dbname=php_test;host=localhost','root','mysql');
        }
        catch (PDOException $e){
            echo $e->getMessage();
            exit();
        }

        #Get the list of countries
        $query = "SELECT country FROM countries";
        $stmt = $db->prepare($query);
        $stmt->execute();
        $countries = "";
        while ($row = $stmt->fetch()) {
            $countries .= '<option value= "'.$row['country'].'">'.$row['country'].'</option>';
        }
?>

然后在表单中:

    <label for="country">Country:</label>
    <select name="country"> <?php echo htmlspecialchars($countries); ?>
    </select>
克里斯85

您已$countries定义,但仅在提交表单时才具有。此代码关闭检查POST的条件这将允许$countries在每次加载时进行填充。

<?php
    $name = $email = $password = $password2 = $address1 = $address2 = $address3 = $town = $county = "";
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $name = sanitize($_POST["name"]);
        if ((strlen($name) < 2) || (strlen($name) > 50)) {
            echo "<span style=\"color: #FF0000;\"> Name must have between 2 and 50 characters </span> <br>";
            $name = "";
        }

        $email = sanitize($_POST["email"]);
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            echo "<span style=\"color: #FF0000;\"> Check the format of the email </span> <br>";
            $email = "";
        }

        $password = sanitize($_POST["pass1"]);
        if ((strlen($password) < 6) || (strlen($password) > 20)) {
            echo "<span style=\"color: #FF0000;\"> Password must have between 6 and 20 characters </span> <br>";  
        }
        else {
            $password2 = sanitize($_POST["pass2"]);
            if ($password != $password2) {
                echo "<span style=\"color: #FF0000;\"> Passwords don't match </span> <br>";
            }
        }

        $address1 = sanitize($_POST["addr1"]);
        if ((strlen($address1) < 2) || (strlen($address1) > 80)) {
            echo "<span style=\"color: #FF0000;\"> The address must have between 2 and 80 characters </span> <br>";
            $address1 = "";
        }      

        if (isset($_POST["addr2"])) {
            $address2 = sanitize($_POST["addr2"]);
            if ((strlen($address2) < 2) || (strlen($address2) > 80)) {
                echo "<span style=\"color: #FF0000;\"> The address 2 must have between 2 and 80 characters </span> <br>";
                $address2 = "";
            }
        }  

        if (isset($_POST["addr3"])) {
            $address2 = sanitize($_POST["addr3"]);
            if ((strlen($address3) < 2) || (strlen($address3) > 80)) {
                echo "<span style=\"color: #FF0000;\"> The address 3 must have between 2 and 80 characters </span> <br>";
                $address3 = "";
            }
        }  

        $town = sanitize($_POST["town"]);
        if ((strlen($town) < 2) || (strlen($town) > 30)) {
            echo "<span style=\"color: #FF0000;\"> The town must have between 2 and 30 characters </span> <br>";
            $town = "";
        }

        $county = sanitize($_POST["county"]);
        if ((strlen($county) < 2) || (strlen($county) > 30)) {
            echo "<span style=\"color: #FF0000;\"> The county must have between 2 and 30 characters </span> <br>";
            $county = "";
        }

        #Connection with the database
       try{
            $db = new PDO('mysql:dbname=php_test;host=localhost','root','mysql');
        }
        catch (PDOException $e){
            echo $e->getMessage();
            exit();
        }
       }
        #Get the list of countries
       $query = "SELECT country FROM countries";
        $stmt = $db->prepare($query);
        $stmt->execute();
        $countries = "";
        while ($row = $stmt->fetch()) {
            $countries .= '<option value= "'.$row['country'].'">'.$row['country'].'</option>';
        }
    function sanitize($data) {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
    }
?>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

变量未定义错误,即使已定义

来自分类Dev

接收错误:注意:未定义变量-但已定义

来自分类Dev

变量已定义但仍未定义错误

来自分类Dev

PHP私有变量是“未定义”,尽管已定义

来自分类Dev

Javascript变量未定义但已定义

来自分类Dev

已定义的未定义变量

来自分类Dev

未定义错误变量的PHP问题

来自分类Dev

PHP登录错误“未定义的变量”

来自分类Dev

Laravel 未定义变量:存储错误但我的存储已定义

来自分类Dev

JavaScript说对象内部的已定义变量未定义

来自分类Dev

注意:对已定义的变量使用未定义的常量

来自分类Dev

尽管已定义,但javascript变量未定义

来自分类Dev

jQuery错误:Var已定义,但说未定义?

来自分类Dev

类型错误:arrayal[i] 未定义但已定义

来自分类Dev

错误未定义对象(而它已定义)

来自分类Dev

变量未定义错误

来自分类Dev

未定义的变量错误

来自分类Dev

错误:未定义的变量

来自分类Dev

PHP未定义变量

来自分类Dev

未定义的变量PHP?

来自分类Dev

PHP $ this的未定义变量

来自分类Dev

未定义的变量| 的PHP

来自分类Dev

PHP 变量未定义

来自分类Dev

PHP错误显示未定义的变量:文件,未知错误

来自分类Dev

PHP错误显示未定义的变量:文件,未知错误

来自分类Dev

angularjs $ localStorage未定义,但已定义

来自分类Dev

访问未定义的属性-但已定义。

来自分类Dev

对已定义函数的未定义引用

来自分类Dev

对已定义方法的未定义引用