错误:未选择数据库

时间:2013-09-22 05:41:06

标签: php mysql mysqli

我尝试连接到数据库连接到数据库是成功但是当我尝试将用户信息与数据库匹配时它给我一个错误没有选择数据库 我尝试使用不同的方法连接到数据库,但没有任何工作

<?php
//CREATING CONNECTION TO DATABASE
$con= new mysqli("localhost", "****", "***", "*****");
$con->select_db("lel_server_user_db_secured");
if(mysqli_connect_errno())
    {
        echo "Problem With connection to database Please contact administrator regarding this error";
    }
/* RETURNS NAME OF DEFAULT DATABASE
if ($result = $con->query("SELECT DATABASE()")) {
    $row = $result->fetch_row();
    printf("Default database is %s.\n", $row[0]);
    $result->close();
}
*/
/*
$host="localhost";
$db_user="sky.xpert";
$db_pass="havefun344";
$database="lel_server_user_db_secured";
mysqli_connect($host,$db_user,$db_pass,$database) or die ("Failed to connect");
mysqli_select_db($database) ;
*/

session_start();

//GATHERING DATA FROM USER FORM
$email=$_POST["login"];
$pass=$_POST["pwd"];

//COMMANDING WHERE TO FIND MATCH FOR LGOIN INFORMATION
$veryfy="SELECT * FROM users WHERE Email='$email' Password='$pass'";
$query=mysql_query($veryfy) or die ( mysql_error() );

$match=0;
$match=mysql_num_rows($query);

//IF MATCH FOUND THEN SETTING SESSION AND REDIRECTING IT TO LOGGED PAGE
if($match==1)
    {
        $_SESSION['loggedin'] = "true";
        header ("Location: logged.php"); //REDIRECTING USER TO ITS HOMEPAGE
    }
else //IF MATCH NOT FOUND THEN REDIRECTING IT BACK TO LOGIN PAGE
    {
        $_SESSION['loggedin'] = "false";
        header ("Location: index.php");
    }
//PERSONAL COMMENTS OR DETIALED COMMENTS
//PROBLEM WITH THIS SCRIPT GIVING OUTPUT ON LOGIN "NO DATABASE SELECTED"
//REFRENCE from http://www.dreamincode.net/forums/topic/52783-basic-login-script-with-php/

?>

4 个答案:

答案 0 :(得分:2)

您正在使用mysqli初始化与数据库的连接。然后,您尝试使用mysql进行查询。显然,通过该库与数据库没有任何关联,因此它失败并出现错误。将mysql_query更改为mysqli_query

一般说明

您当前的代码容易受到SQL注入攻击,因为在将其放入查询之前,您不会清理用户的输入。考虑使用prepared queries

答案 1 :(得分:0)

数据库lel_server_user_db_secured可能不存在。

你的mysql的内容:

 mysql -hlocalhost -uusername -p

然后输入您的密码。登录后,键入command:

show databases;

检查结果中是否有lel_server_user_db_secured

<强> UPDATE1 *

更改以下代码:

$veryfy="SELECT * FROM users WHERE Email='$email' Password='$pass'";
$query=mysql_query($veryfy) or die ( mysql_error() );

$match=0;
$match=mysql_num_rows($query);

为:

$veryfy="SELECT * FROM users WHERE Email='$email' Password='$pass'";
$result = mysqli_query($con, $veryfy) or die ( mysqli_connect_errno() );

$match=0;
$match=mysqli_num_rows($result);
var_dump($match);

答案 2 :(得分:-1)

在程序的前半部分,您使用了 mysqli ,在后半部分使用了 mysql 。使用 mysqli mysql 。我建议在整个程序中使用 mysqli ,这样你就不会受到SQL注入攻击

答案 3 :(得分:-2)

你可以通过

完成
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

无需再次$con->select_db("lel_server_user_db_secured");

并且使用mysqli并不意味着您的代码是安全的......您的代码仍然 易受SQL注入攻击 使用 预备语句 代替或至少mysqli_real_escape_string

您需要正确转义所有请求

并且可能存在您的数据库,因此请检查它是否存在

您正在混合两种不同的API

您不能将MySQLi函数与MySQL_*函数

一起使用