【发布时间】:2014-02-19 04:19:24
【问题描述】:
解决方案:
我修改了 kcdwayne 的测试(使用 test.php 和 register.php)并确定问题在于使用文件名“db.php”。我将它重命名为“datab.php”,它似乎在使用它的任何地方都可以工作。有趣的。感谢您的回答!
原帖:
我有一个文件 - checkuser.php - 从登录表单发布到以验证用户的凭据。给出了username 和password。通过一个外部文件 - 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.php 和db.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();
}
?>
【问题讨论】:
-
require "db.php";也在checkuser.php里面吗? -
是 - 第一个参考,最后一行。
-
我需要查看您所有文件的完整代码。我不会做任何猜测。
-
不要使用
$sql = mysqli_query($con, "SELECT...尝试使用$sql="SELECT...及以下$login_check = mysqli_num_rows($con, $sql); -
我用kcdwayne的测试,找到了解决办法;使用 db.php 显然是一个禁忌。重命名为datab.php,一切正常。