Не удается подключиться к локальному размещенному mysql, используя скрипт PHP

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

Обратите внимание на следующее

1). Этот код позволяет мне подключиться к MAMP с моей конечной точки без проблем, поэтому я знаю, что MySQL работает и т. Д.

mysql --host=127.0.0.1 --port=8889 --user=root -p 

2) Когда я попытался создать сайт на удаленной размещенной платформе, этот код позволил мне подключиться от моего php-скрипта к MySQL на удаленном сервере, поэтому я знаю, что в этом коде нет ничего плохого, но он не работайте на моем компьютере.

 defined('DB_SERVER') ? null : define("DB_SERVER","host"); defined('DB_USER') ? null : define("DB_USER","username"); defined('DB_PASS') ? null : define("DB_PASS","password"); defined('DB_NAME') ? null : define("DB_NAME","photo_gallery"); 

3 Я смог запустить самостоятельный сайт wordpress на своем компьютере, но я не установил для него соединение с базой данных (это где-то в коде), поэтому я не делаю то, что я делаю неправильно. Этот сайт доступен по следующему пути. http: // localhost: 8888 / wordpress / даже если он подключен к порту 8889 (согласно mysql)

4 MAMP говорит мне, что я могу подключиться к базе данных из своих собственных скриптов, используя этот формат

 Host localhost Port 8889 User root Password root 

Поэтому я добавил эту строку

 defined('DB_PORT') ? null : define("DB_PORT","8889"); 

к этой группе, вот так

 defined('DB_SERVER') ? null : define("DB_SERVER","host"); **defined('DB_PORT') ? null : define("DB_PORT","8889");** defined('DB_USER') ? null : define("DB_USER","username"); defined('DB_PASS') ? null : define("DB_PASS","password"); defined('DB_NAME') ? null : define("DB_NAME","photo_gallery"); 

но это все еще не сработало. Мне говорят, что соединение с базой данных терпит неудачу, когда я пытаюсь ее протестировать.

Есть идеи?

РЕДАКТИРОВАТЬ. Я попытался поместить порт рядом с локальным хостом, но он не работает.

 defined('DB_SERVER') ? null : define("DB_SERVER","localhost:8889"); defined('DB_USER') ? null : define("DB_USER","root"); defined('DB_PASS') ? null : define("DB_PASS","root"); defined('DB_NAME') ? null : define("DB_NAME","photo_gallery"); 

РЕДАКТИРОВАТЬ. Вышеприведенный код был в файле config.php, который был включен в database.php, который является этим

 <?php require_once("config.php"); class MySQLDatabase { private $connection; function __construct(){ $this->open_connection(); } public function open_connection(){ $this->connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS); if(!$connection){ die("Database connection failed:" . mysql_error()); } else { $db_select = mysql_select_db(DB_NAME, $this->connection); if (!$db_select) { die("Database selection failed: " . mysql_error()); } } } public function close_connection(){ if(isset($this->connection)){ mysql_close($this->connection); unset($this->connection); } } public function query($sql) { $result = mysql_query($sql, $this->connection); $this->confirm_query($result); return $result; } public function mysql_prep( $value ) { $magic_quotes_active = get_magic_quotes_gpc(); $new_enough_php = function_exists( "mysql_real_escape_string" ); // ie PHP >= v4.3.0 if( $new_enough_php ) { // PHP v4.3.0 or higher // undo any magic quote effects so mysql_real_escape_string can do the work if( $magic_quotes_active ) { $value = stripslashes( $value ); } $value = mysql_real_escape_string( $value ); } else { // before PHP v4.3.0 // if magic quotes aren't already on then add slashes manually if( !$magic_quotes_active ) { $value = addslashes( $value ); } // if magic quotes are active, then the slashes already exist } return $value; } private function confirm_query($result){ if(!$result){ die("Database query failed:" . mysql_error()); } } } $database = new MySQLDatabase(); ?> с <?php require_once("config.php"); class MySQLDatabase { private $connection; function __construct(){ $this->open_connection(); } public function open_connection(){ $this->connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS); if(!$connection){ die("Database connection failed:" . mysql_error()); } else { $db_select = mysql_select_db(DB_NAME, $this->connection); if (!$db_select) { die("Database selection failed: " . mysql_error()); } } } public function close_connection(){ if(isset($this->connection)){ mysql_close($this->connection); unset($this->connection); } } public function query($sql) { $result = mysql_query($sql, $this->connection); $this->confirm_query($result); return $result; } public function mysql_prep( $value ) { $magic_quotes_active = get_magic_quotes_gpc(); $new_enough_php = function_exists( "mysql_real_escape_string" ); // ie PHP >= v4.3.0 if( $new_enough_php ) { // PHP v4.3.0 or higher // undo any magic quote effects so mysql_real_escape_string can do the work if( $magic_quotes_active ) { $value = stripslashes( $value ); } $value = mysql_real_escape_string( $value ); } else { // before PHP v4.3.0 // if magic quotes aren't already on then add slashes manually if( !$magic_quotes_active ) { $value = addslashes( $value ); } // if magic quotes are active, then the slashes already exist } return $value; } private function confirm_query($result){ if(!$result){ die("Database query failed:" . mysql_error()); } } } $database = new MySQLDatabase(); ?> 

Каков результат следующего фрагмента?

 <?php // test.php $host = 'localhost:8889'; $username = 'root'; $password = 'root'; $database = 'your_database'; if(!$connection = mysql_connect($host, $username, $password)) die('Error connecting to '.$host.'. '.mysql_error()); if(!mysql_select_db($database)) die('Error selecting '.$database.'. '.mysql_error()); echo 'Connection successful.'; ?> 

Если это выполняется без ошибки, возможно, вы просто неправильно устанавливаете свои константы. Обратите внимание, что mysql_connect принимает порт как часть параметра хоста, а не как отдельный аргумент.

попробуйте 127.0.0.1:3307

это сработало для меня

Можете ли вы попытаться использовать:

определить ( "DB_SERVER", "127.0.0.1");

важно: проверка определена или нет осуществляется с помощью определенного (), но не путем сравнения его с нулевым, так что выборка:

http://www.php.net/defined

 defined('DBSERVER') or define('DBSERVER', 'localhost:8889'); 

предоставление информации о порте при соединении – это просто добавить его вместе с именем сервера, то есть, если ваш сервер mysql является localhost тогда при подключении просто сделайте это

 localhost:8889 

поэтому ваш пример скрипта может выглядеть так:

 $strServer = "localhost:8889"; $strUser = "root"; $strPassword = "root"; $strDB = "test_db"; $conn = @mysql_connect($strServer, $strUser, $strPassword); if(!$conn) { die('Unable to connect to database: ' . mysql_error()); }else{ $db=mysql_select_db($strDB); if(!$db){die('Error Selecting Database: '.$strDB.' [Error : '.mysql_error().']');} } 

Пример с портом 3306 по умолчанию MySQL:

mysql_connect ('localhost: 3306', 'root', 'password');

Это действительно упрощает процесс копирования сценариев между удаленным сервером и локальным веб-сервером.