我的开发环境基于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)没有问题,数据库结构看起来还不错。任何帮助将非常感激 !
答案 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)
如果它在您以前的机器中正常工作,那么我认为这个解决方案可以帮助您选择数据库。 逐步检查信息
答案 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_*
已被弃用。因此,最好留下使用它们的旧做法!