“没有选择数据库”问题

时间:2013-12-26 17:44:02

标签: php mysql sql database registration

我的开发环境基于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)没有问题,数据库结构看起来还不错。任何帮助将非常感激 !

3 个答案:

答案 0 :(得分:1)

在第二部分中您正在使用mysql_并连接您使用mysqli_

也将mysqli_用于您的查询

$query = mysqli_query($db_connect,"SELECT * FROM `users` WHERE username = '$username' OR email = '$email'") or die (mysqli_error()); // mySQL Query    
        $row = mysqli_num_rows($query);

答案 1 :(得分:0)

如果它在您以前的机器中正常工作,那么我认为这个解决方案可以帮助您选择数据库。 逐步检查信息 enter image description here

答案 2 :(得分:0)

替换脚本中使用的所有mysql_*,并将其替换为mysqli_*

例如:

$query = mysqli_query($db_connect, "SELECT * FROM `users` WHERE username = '$username' OR email = '$email'"");

我建议您使用MySQLi类进行连接。它使编码更容易!特别是安全使用占位符(?)。有关详细信息,请访问PHP.net - Prepared Statements in MySQLi

此外,mysql_*已被弃用。因此,最好留下使用它们的旧做法!