2014-09-24 3 views
-6

help, cant access database. он не может направить меня в мою базу данных, не используя mysql_query для извлечения данных. Я думаю, что это в моей недавно созданной базе данных, которую система не может найти? но сайт хостинга не дал мне никакого выбора, чтобы переименовать мою базу данныхДоступ запрещен для пользователя 'root' @ 'localhost' (с использованием пароля: НЕТ)

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


?> 

Я думаю, что это в моей недавно созданной базе данных, которую система не может найти? но хостинг-сайт не дал мне выбора для переименования моей базы данных

+3

Вы смешивания '' mysqli_' с mysql_'. Вы также делитесь своими учетными данными с нами, чего не следует делать. –

+4

Пожалуйста, [не используйте 'mysql_ *' функции в новом коде] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php). * Они больше не поддерживаются и [официально устарели] (https://wiki.php.net/rfc/mysql_deprecation) *. См. [Красная рамка] (http://uk.php.net/manual/en/function.mysql-connect.php)? Узнайте о [подготовленных заявлениях] (http://en.wikipedia.org/wiki/Prepared_statement) и используйте [PDO] (http://us1.php.net/pdo) или [MySQLi] (http: // us1.php.net/mysqli). [Эта статья] (http://php.net/manual/en/mysqlinfo.api.choosing.php) поможет вам решить, какой из них. –

+0

Можете ли вы помочь мне исправить это? im просто новый в кодировании, и я не знаю, что такое diff. – rayah

ответ

0

Вы не можете смешивать mysqli и mysql. Я настоятельно рекомендую использовать mysqli (с i), поскольку mysql устарел. Кроме того, он совместим с PostgreSQL, с которым многие из нас переключаются, поскольку Oracle заняла Sun Microsystems.

2

Эта линия:

$result = mysql_query(" select... 

должно быть

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

и передачи DB подключение к запросу.

используя его как object oriented style, который является вашим подключением к БД.

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

В настоящее время вы смешиваете API MySQL. Эти двое не смешиваются.

Использовать исключительно mysqli_. Не включайте никаких функций mysql_ в любом месте вашего кода или файлов. То же самое касается необходимых файлов.


Я заметил, что вы используете sec_session_start(). Это функция, которую я видел раньше. Убедитесь, что он является частью вашего включенного файла, поскольку я не видел никаких упоминаний об этом в вашем опубликованном коде.


DanFromGermany сделал хороший пункт о header

Место 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

Вероятно, должен быть запрос '$ mysqli-> (. ..) '. – tadman

+0

@tadman Хорошая точка, отредактирует. –

Смежные вопросы