MySQL и PHP работают локально, а не на GoDaddy - PullRequest
2 голосов
/ 08 января 2010

Я использую хостинг Shared Linux, и некоторые написанные мной PHP просто не будут работать с моей БД на сервере.

EDIT:

Я исправил проблему. Я случайно удалил переменную подключения к базе данных из файла конфигурации. Вот это да. Это было глупо с моей стороны.

РЕДАКТИРОВАТЬ:

Я не имею в виду, что не могу читать БД. Я достаточно разобрался, чтобы знать, что БД работает и что когда я изменяю переменную пароля, я получаю «Отказано в доступе». Кроме того, на локальном хосте пароль другой, и он работает.

РЕДАКТИРОВАТЬ 2: Сейчас я работаю с примером сценария. Теперь он показывает пустую страницу. По крайней мере, ошибок нет ... Я сменил пароль на буквенно-цифровой. Я не использую localhost.

РЕДАКТИРОВАТЬ 3: С правильным паролем и информацией о сервере я получаю следующую ошибку, используя mysql_error (). Я не использую ведущий http: // в URL базы данных.

Не удается подключиться к локальному серверу MySQL через сокет '/var/lib/mysql/mysql.sock' (2)

Редактировать 4:

Вот мой код подключения. Обратите внимание, что nl() и report() являются предопределенными функциями, которые отображают символы новой строки и диагностические сообщения соответственно. Переменные соединения находятся во внешнем файле, включенном выше. Я проверил - включения работают нормально.

//////////////////////////////
// Connect to the database  /////////////////////////////////////////
//////////////////////////////

//report -  Attemting to establish connection ...
report(4);

////
//Step 1) Set connection in variable
////

$conn = mysql_connect($server, $user, $pass);

////
// Step 2) Verify the connection
////

if(!$conn){
    //report - failed, see next line...
    report(5);
    //report - FATAL ERROR: Check database name, username and password.
    report(9);      
}else{
  //report - done!
  report(7);
}

//report - Selecting database ...
report(6);

////
// Step 3) Select the database
////

$db_select = mysql_select_db($database);

////
// Step 4) Verify successful selection
////

if(!$db_select){
    //report - failed, see next line...
    report(5);
    //report - FATAL ERROR: Could not select database.
    report(8);  
}else{
  //report - done!
  report(7);
}

//report -  Running query ...
report(10);

////
// Step 5) Create the original the query
////

$selector = " * ";
$target = "`properties`";
$condition = "1";

$sql = "SELECT " . $selector . " FROM " . $target . " WHERE " . $condition;

////
//  Step 6) Check for a $_GET[] parameter
////

if($_GET['listing'] && !is_null($_GET['listing'])){                 //if a listing number was supplied
    $listingNum = htmlentities($_GET['listing']);                   //safety first - clean it from code injections                      
    $pattern = '/\b[0-9]{1,6}\b/';                                  //define a range of valid, sercheable listings
    if(preg_match($pattern,$listingNum) == 1){                      //if the listing id is a valid one
        $sql .= " AND `listing_id` =" .$listingNum . "";            //search for it in the database
    }elseif($exp == 0){                                             //if the listing number is out of range         
        if($listingNum != "all"){                                   //check if the "all" keyword was ommitted - if it was not supplied.
            //report - failure ... see below
            report(5);
            //report - Invalid listing ID
            report(12);
            //
            // Invalid Listing ID...
            //
        }       
    }
}else if(!$_GET['listing']){
    //report - failure ... see below
    report(5);
    //report - Invalid listing ID
    report(12);
    //
    //No listing ID
    //
}


if(!$sql){
    //report - failed, see next line...
    report(5);
    //report - FATAL ERROR: Could not run query.
    report(11);
    //
    // For some reason the query doesn't exist here. I really do wonder why.
    //
}else{
  //report - done!
  report(7);
  nl();
}

$result = mysql_query($sql);    //perform the actual query

if(!$result){
    echo("There's been some sort of error with the search lookup. Here are the details: \n" . mysql_error());
}

mysql_close($conn);         //close the connection to the SQL server

Ответы [ 5 ]

3 голосов
/ 08 января 2010

Вы использовали " localhost " в соединении mysql?

Большая часть хост-службы mysql на другой машине и, как правило, localhost не работает, необходимо указать точный URL-адрес, предоставленный вашим сервером.

И символ "#" в пароле не должен быть проблемой, но ваш пароль должен быть внутри кавычки типа "123 # 123", я не уверен, что 123 # 123 будет работать или нет.

2 голосов
/ 08 января 2010

Для GoDaddy вы должны не использовать localhost в качестве сервера базы данных. Вот пример кода PHP в разделе Базы данных -> MySQL в менеджере хостинга, который может помочь.

0 голосов
/ 10 января 2010

Примечание для себя:

В следующий раз, когда произойдет нечто подобное, подтвердите, какую базу данных вы выбираете в MySQL

0 голосов
/ 08 января 2010

Я использовал GoDaddy один или два раза (ужасный сервис между прочим), и, насколько я помню, хост mysql, который составляет 98% localhost, должен быть настроен на другой хост, но я не уверен , Может быть, вам стоит начать проверять там.

0 голосов
/ 08 января 2010

Вы когда-нибудь обращались к базе данных раньше? У вас установлен phpMyAdmin? и хеш не должен быть проблемой. Если он позволяет вам установить его в качестве пароля, то вы можете войти в систему точно. Не могли бы вы опубликовать код, который вы используете, чтобы мы могли проверить его?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...