【发布时间】:2013-12-26 17:44:01
【问题描述】:
我的开发环境基于 Windows XP SP3 上的 EasyPHP 12 和 PHPdesigner。 我正在研究注册/登录解决方案,并且我使用一个非常基本的脚本成功地完成了它的“注册”部分,该脚本曾经可以正常工作。出于某种原因,我不得不切换机器,当我将所有相关文件复制回我的第一个工作站时,我收到了“未选择数据库”消息。我已经尝试了一切来解决这个问题,包括创建一个到目前为止只有一个表(用户)的全新数据库。 我的连接文件(db_connection.php)如下:
DEFINE ('DB_USER', 'superuser');
DEFINE ('DB_PASSWORD', 'password');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME', 'hf_databank');
// Make the connection:
$db_connect = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
// Check connection
if (mysqli_connect_errno($db_connect)) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// Let us select the database (just in case you want to change it):
$db_select = mysqli_select_db ($db_connect, DB_NAME) OR die;
它似乎工作正常。
然后,回到我的 index.php 文件,看起来以下验证行正在创建我无法修复的问题:
include_once '../includes/db_connection.php';
include_once '../includes/functions.php';
$action = array();
$action['result'] = null;
$text = array();
//check if the form has been submitted
if(isset($_POST['signup'])){
//cleanup the variables and prevent mysql injection (this uses the function "clean" defined in functions.php file)
$username = clean($_POST['username']);
$password = clean($_POST['password']);
$email = clean($_POST['email']);
//Validation 1: Let’s say the user submits the form without a username. Our statement is going to run the
//code below.
if(empty($username)){ $action['result'] = 'error'; array_push($text,'Please set a valid username'); }
if(empty($password)){ $action['result'] = 'error'; array_push($text,'Please define a password'); }
if(empty($email)){ $action['result'] = 'error'; array_push($text,'Please set a valid email address'); }
$query = mysql_query("SELECT * FROM `users` WHERE username = '$username' OR email = '$email'") or die (mysql_error()); // mySQL Query
$row = mysql_num_rows($query); // Checks to see if anything is in the db.
if ($row > 0) {
$action['result'] = 'error'; array_push($text,'existing username/email;
}
脚本似乎停留在“$query”步骤,我在该步骤中收到错误消息。
我尝试了几种方法来查明问题,但仍然无法理解问题出在哪里。我也能够毫无问题地连接到数据库(hf_databank),数据库结构看起来不错。任何帮助将非常感激 !
【问题讨论】:
-
你使用的是mysql_query而不是mysqli_query,使用mysqli*版本试试
-
你在哪里创建的数据库?你有没有设置任何用户名和密码?尽快告诉我。
-
你在其中一个中有
mysqli,在另一个中有可怕的mysql_query。为什么不在两者中都使用mysqli?看到像clean这样的函数非常令人担忧,因为它们几乎没有被正确实现。 -
@Asraful:是的,我已经设置了与本地 MySQl 服务器的连接,它工作得很好(用户名:超级用户,密码:密码)......正如我所说,我完全能够连接到数据库使用这些凭据并操作记录...由于某种原因,当我尝试从 PHP 运行 mysql_query 时,它显示“未选择数据库”:(
-
@tadman: 是的,我知道 mysql_ 和 msqli_ 表单的问题,我会更改这些,但我认为这不是我的数据库选择问题的原因(因为完全相同的脚本几周前工作正常...)...无论如何,我会更新代码,但是您还看到其他错误吗?关于“清洁”功能,我很欣赏您的评论,但我试图暂时将其排除在外,我得到了同样的错误:(
标签: php mysql sql database registration