dongyoufo5672 2011-04-02 02:00
浏览 49
已采纳

无法使用PHP脚本连接到本地托管的mysql

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();


?>
  • 写回答

5条回答 默认 最新

  • dtng5978 2011-04-02 02:07
    关注

    What is the output of the following snippet?

    <?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.';
    
    ?>
    

    If this executes without an error, then you're probably just setting your constants incorrectly. Note that mysql_connect takes the port as part of the host parameter, not as a separate argument.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 运筹学中在线排序的时间在线排序的在线LPT算法
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧