用户访问被拒绝';root'@';localhost';(使用密码:NO)


Access denied for user 'root'@'localhost' (using password: NO)

帮助,无法访问数据库。它无法将我引导到我的数据库,也无法使用mysqlquery进行数据检索。我想系统在我新创建的数据库中找不到?但是托管网站让我没有选择重命名我的数据库

db_connect.php

<?php
include_once 'psl-config.php';   // As functions.php is not included
$mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);
?>

在那里我调用我的用户和数据库。psl_config.php

<?php
define("HOST", "localhost");     // The host you want to connect to.
define("USER", "xxx");    // The database username. 
define("PASSWORD", "xxx");    // The database password. 
define("DATABASE", "xxx");    // The database name.
define("CAN_REGISTER", "any");
define("DEFAULT_ROLE", "member");
define("SECURE", FALSE);  
?>
$name = $_SESSION ['username'];
$result = mysql_query(" select score1 from members where username = '$name'");

用户名说明正确。mysql查询代码第14行是错误所在。

<?php
include_once 'includes/db_connect.php';
include_once 'includes/functions.php';
sec_session_start();
if(!isset($_SESSION['username'])){
         header("Location: director.php");
    }

$name = $_SESSION ['username'];
$result = mysql_query(" select score1 from members where username = '$name'");

?>

我想系统在我新创建的数据库中找不到?但是托管网站让我没有选择重命名我的数据库

此行:

$result = mysql_query(" select...

应该是

$result = $mysqli->query("select...

并将DB连接传递给查询。

将其用作面向对象的样式,这就是您的数据库连接。

$mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);

您目前正在混合MySQL API。这两个不混在一起。

仅使用mysqli_。不要在代码或包含的文件中的任何位置包含任何mysql_函数。所需文件也是如此。


我注意到您正在使用sec_session_start()。这是我以前见过的功能。请确保它是您包含的文件的一部分,因为我在您发布的代码中没有看到任何其他提及它的内容。


CCD_ 4对CCD_

exit;放在您的头之后,否则您的代码将继续运行:

header("Location: director.php");
  exit;

  • 您当前的代码对SQL注入是开放的。使用准备好的语句

以下是使用参数化方法的示例:

$name = $_SESSION ['username'];
$stmt = $mysqli->prepare("select score1 from members where username = ?");
$stmt->bind_param('s', $name);
    if (!$stmt->execute()) {
    echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
    }

另一个例子:

if($statement=$mysqli->prepare("select score1 from members where username = ?")){
 $name = $_SESSION ['username'];
 $statement-> bind_param("s", $name);
// Execute
 $statement-> execute();
// Bind results
 $statement-> bind_result($name);
// Fetch value
 while ( $statement-> fetch() ) {
 echo $name . "<br>";
 }
// Close statement
 $statement-> close();
 }
// Close entire connection
 $mysqli-> close();

不能混合使用mysqlimysql。我强烈建议使用mysqli(带I),因为mysql正在被弃用。此外,它与PostgreSQL兼容,自从Oracle接管Sun Microsystems以来,我们中的许多人都在改用PostgreSQL。