I am trying to build a self-hosted PHP site, but I am having trouble connecting to the database from my PHP script.
Please note the following
1). This code allows me to connect to MAMP from my terminus without problem so I know MySQL is working etc
mysql --host=127.0.0.1 --port=8889 --user=root -p 2) When I tried to build a site on a remote hosted platform, this code allowed me to connect from my php script to MySQL on the remove server, so I know there is nothing wrong with this code per se, but it didn't work on my computer.
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 I have been able to run a self-hosted wordpress site on my computer, but I didn't establish the database connection for that (it's somewhere in the code) so I don't what I'm doing wrong. That site is accessible at the following path. http://localhost:8888/wordpress/ even though it is connected at port 8889 (according to mysql)
4 MAMP tells me that I can connect to the database from my own scripts using this format
Host localhost Port 8889 User root Password root Therefore, I added this line
defined('DB_PORT') ? null : define("DB_PORT","8889"); to this group, like so
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"); but it still didn't work. I'm being told database connection fails when I try to test it.
Any ideas?
EDIT. I tried to put the port next to the localhost but it's not working.
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"); EDIT. The above code was in the config.php which was included into the database.php which is this
<?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" ); // i.e. 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(); ?>
mysql_connect(DB_SERVER, DB_USER, DB_PASS);at a later stage, I'm not sure what would be wrong. For the sake of it, try removing the ternary portion and just making the lines likedefine("DB_SERVER","localhost:8889");.