Вопрос по php, mysql – Не удается подключиться к серверу MySQL с помощью PDO [закрыто]

9

У меня есть PHP-скрипт, который я использую для подключения к базе данных MySQL. Соединение через mysql_connect работает отлично, но при попытке с PDO я получаю следующую ошибку:

<code>SQLSTATE[HY000] [2005] Unknown MySQL server host 'hostname' (3)
</code>

код, который я использую для подключения, приведен ниже:

<code>    <?php  
    ini_set('display_errors', 1);
    error_reporting(E_ALL);

    $hostname_localhost ="hostname";  
    $database_localhost ="dbname";  
    $username_localhost ="user";  
    $password_localhost ="pass";  
    $user = $_GET['user'];  
    $pass = $_GET['pass'];

    try{
        $dbh = new PDO("mysql:host=$hostname_localhost;dbname=$database_localhost",$username_localhost,$password_localhost);
        echo 'Connected to DB';
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $stmt = $dbh->prepare("SELECT check_user_company(:user,:pass)");
        $stmt = $dbh->bindParam(':user',$user,PDO::PARAM_STR, 16);
        $stmt = $dbh->bindParam(':pass',$pass,PDO::PARAM_STR, 32);

        $stmt->execute();

        $result = $stmt->fetchAll();

        foreach($result as $row)
        {
            echo $row['company_id'].'<br />';
        }

        $dbh = null;
    }
    catch(PDOException $e)
    {
        echo $e->getMessage();
    } 
    ?>  
</code>

Заранее спасиб

Я решил проблему, объявив: $ hostname_localhost Я также добавил номер порта в оператор после добавления:port=$port_localhost это сработал user1337210
Где написано "имя хоста", которое вы должны заполнитьва имя хоста или IP-адрес сервера mySQL. Pekka 웃
Ваш IP-адрес неверный или на нем не запущен сервер mySql, к которому вы можете получить доступ. vascowhite
Я забыл упомянуть, я использую IP-адреса (и этот IP-адрес также присутствует в ошибке), но я специально изменил значения из соображений безопасности user1337210
Ошибка достаточно очевидна ... указанное имя хоста не может быть преобразовано в IP-адрес. Marc B

Ваш Ответ

3   ответа
9

писал localhost: 1234 и получил эту ошибку.

Исправлено:

mysql:host=$hostname_localhost;port=1234;dbname=$database_localhost",$username_localhost,$password_localhost);
        echo 'Connected to DB';
3

вот что я использую для создания своих коннекторов PDO (заметил, что ваше dbname и host сделаны не так, как у меня, не знаю, если это уместно, но стоит проверить):

PDO Creation function

require_once('config.inc.php');

function buildDBConnector(){
    $dsn = 'mysql:dbname='.C_BASE.';host='.C_HOST;
    $dbh = new PDO($dsn, C_USER, C_PASS);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    return $dbh;
}

Config.inc.php

define('C_HOST','localhost');// MySQL host name (usually:localhost)
define('C_USER','sweetUsername');// MySQL username
define('C_PASS','sweetPassword');// MySQL password
define('C_BASE','superGreatDatabase');// MySQL database

А пока нет смысла, когда я пытался объявить$dsn встроенный, включая переменные во времяnewPDO Звони, у меня тоже были сбои. Я разбил его на части и использовал переменную $ dsn. И с тех пор не было проблем.

Хотите знать, случайно ли вы пользуетесь виртуальным хостингом?

НОТА Если у вас нет выделенного IP-адреса, а вместо этого вы проходите через NAT, ваш IP-адрес не будет правильно преобразован в ваш реальный сервер.

Это вообще поможет?

ОБНОВИТЬ Просто подумал о другом. Вы пытаетесь подключиться к базе данных mysql с другим IP-адресом, с которого не запускаются ваши скрипты? В этом случае вам, вероятно, потребуется включить удаленный доступ к ip-адресу, с которого вы вызываете базу данных. Довольно легко сделать, но КРИТИЧЕСКИ, если у вас нет доступа к localhost.

Как можно разрешить удаленный доступ? patorjk
0

вы не указываете подробности DNS хоста базы данных или IP-адрес. Добавление, которое решит проблем

Похожие вопросы