如何让mysqli_connect()工作?

时间:2010-11-02 21:08:45

标签: php

在运行这个简单的脚本时:

<?php
$link = mysqli_connect("localhost", "*****", "********", "***");
if (!$link) {
  printf("Connect failed: %s\n", mysqli_connect_error());
  exit();
  }
printf("Host information: %s\n", mysqli_get_host_info($link));
mysqli_close($link);
?>

在我的networksolutions帐户上收到此错误

连接失败:无法通过socket'/tmp/mysql.sock'连接到本地MySQL服务器(2)

我两次打电话给网络解决方案技术支持。他们“重新同步”了服务器,我们重新验证了“连接字符串”的功能参数......但是没有去。我尝试从mysql_connect()切换到mysqli_connect()。

我不知道它会是什么。我知道成千上万的NS客户必须这样做但却没有在他们的论坛上找到答案。

请帮忙。任何有兴趣在我的网站上工作的人都请告诉我。

由于

5 个答案:

答案 0 :(得分:1)

尝试127.0.0.1而不是localhost使用TCP / IP而不是通过本地套接字建立连接,这似乎因某种原因而被破坏。

Background

答案 1 :(得分:1)

下面的代码可能有帮助!

<?php
/*SERVER database connection*/
    function dbconnect(){
    $connection = mysql_connect('localhost','****','****);
        if(!$connection){
        return false;
        }
        if(!mysql_select_db('database_name')){
        return false;
        }
        return $connection;
    }
?>

答案 2 :(得分:1)

尝试使用本例作为基础的PDO

    <?php
     $orig = $_GET['orig'];
     $des_id = $_GET['des_id'];
            try {
                $dbuser = "kim";
                $dbpass = "kim";
    $conn = new PDO('mysql:host=localhost;dbname=destination', $dbuser, $dbpass);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);    
    $stmt = $conn->prepare("SELECT pl_id FROM view_places WHERE name = :name LIMIT 1");

                $stmt->bindParam(':name',$orig); 
                $stmt->execute();
                $result_1 = $stmt -> fetch();
                $res1 = $result_1["pl_id"];  

                $stmt->bindParam(':name', $des_id); 
                $stmt->execute(); 
                $result_2 = $stmt -> fetch(); 
                    $res2 = $result_2["pl_id"];  
                    echo   'origin_number:'.$res1. ', '.'destination_id:'.$res2;
                }   catch(PDOException $e) {
                        echo 'ERROR: ' . $e->getMessage();
                }

            ?>

答案 3 :(得分:0)

你确定它应该是localhost吗?我知道Dreamhost不允许localhost个连接通过 - 您必须连接到mysql.example.com

答案 4 :(得分:0)

让他们知道他们不仅需要设置正确的mysql插件默认套接字,而且需要mysqli插件默认套接字。

从我的服务器的php.ini配置:

; Default socket name for local MySQL connects.  If empty, uses the built-in
; MySQL defaults.
mysql.default_socket  = "/var/lib/mysql/mysql.sock"
mysqli.default_socket = "/var/lib/mysql/mysql.sock"

因此两者都必须设定。我打赌他们没有设置mysqli.default_socket。