错误:未选择任何数据库


Error:NO database is selected

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

<?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/
?>

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

一般说明

您当前的代码容易受到 sql 注入攻击,因为在将用户输入放入查询之前,您不会对其进行清理。请考虑使用准备好的查询。

数据库lel_server_user_db_secured可能不存在。

内容到你的 mysql:

 mysql -hlocalhost -uusername -p

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

show databases;

检查结果中是否有lel_server_user_db_secured

更新1*

更改以下代码:

$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);

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

你可以简单地通过

$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_*函数一起使用