简单的PHP MySQL $ con undefined

时间:2014-01-28 02:47:16

标签: php mysql

解决方案:

我使用kcdwayne的测试(使用test.php和register.php)进行了修改,并确定问题在于使用文件名“db.php”。我将其重命名为“datab.php”,它似乎可以在任何使用它的地方工作。有趣。谢谢你的回答!


原帖:


我有一个文件 - checkuser.php - 从登录表单发送以验证用户的凭据。已提供usernamepassword。通过外部文件 - db.php - 我正在尝试建立与MySQL数据库的连接。设置:

checkuser.php:

    session_start();
    error_reporting(E_ALL); 
    ini_set( 'display_errors','1');
    require "db.php";

db.php中:

    $con = mysqli_connect("server", "user", "pass", "db");
    if (mysqli_connect_errno($con)) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

...稍后在checkuser.php中:

    $username = $_POST['username'];
    $password = $_POST['password'];

    $sql = mysqli_query($con, "SELECT * FROM userdata WHERE username='$username' AND password='$password' AND activation='true'");

因此,这就是我的问题:

    Notice: Undefined variable: con in /path/to/checkuser.php on line 23

checkuser.phpdb.php位于同一个文件夹中;如果db.php中的代码本身移入checkuser.php,则可以轻松建立MySQL连接。

我做错了什么?


checkuser.php:

    <?php
        session_start();

        error_reporting(E_ALL); 
        ini_set( 'display_errors','1');

        require "db.php";

        $username = $_POST['username'];
        $password = $_POST['password'];

        if((!$username) || (!$password)){
            echo "<font color='white'>Please enter ALL of the information! <br />";
            include 'login.php';
            exit();
        }

        $password = md5($password);

        $sql = mysqli_query($con, "SELECT * FROM userdata WHERE username='$username' AND password='$password' AND activation='true'");
        $login_check = mysqli_num_rows($sql);


        if($login_check > 0) {
            while($row = mysqli_fetch_assoc($sql)) {
                ... set some $_SESSION variables ...
            }
        }
    ?>

db.php中:

    <?php
        $con = mysqli_connect("server", "user", "password", "database");

        if (mysqli_connect_errno($con)) {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
        }
    ?>

1 个答案:

答案 0 :(得分:1)

db.php included required / checkuser.php $con上的变量应该在那里,前提是:

  • checkuser.php的范围不在$con无法访问的区域内。
  • 您请求它的地方可以接收它(即,它作为参数传递到函数中,或者它没有包含在无法访问test.php的范围内。

试试这个:

制作名为$var = 'this is my test var';的文件,并在其中放置

register.php

然后在名为require('test.php'); echo $var; 的同一文件夹中创建一个文件,并仅放置

db.php

如果有效,您的问题可能在范围内,或者只是没有加载{{1}}。