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

时间:2014-09-24 19:57:55

标签: php mysql mysqli

帮助,无法访问数据库。它不能指引我到我的数据库,不能使用mysql_query进行数据检索。我认为这是在我新创建的数据库中,系统无法找到?但托管网站让我无法重命名我的数据库

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行是bug的所在。

<?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'");


?>

我认为在新创建的数据库中系统无法找到?但托管网站让我无法重命名我的数据库

2 个答案:

答案 0 :(得分:2)

这一行:

$result = mysql_query(" select...

应该是

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

并将DB连接传递给查询。

将其用作object oriented style,这是您的数据库连接。

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

您目前正在混合使用MySQL API。那两个不混。

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


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


DanFromGermanyheader

提出了一个很好的观点

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

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

以下是使用parametrized方法的示例:

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

答案 1 :(得分:0)

您不能混用mysqlimysql。我强烈建议使用mysqli(使用i),因为mysql已被弃用。此外,它与PostgreSQL兼容,自从Oracle接管Sun Microsystems以来,我们很多人都在转向它。