2010-11-02 58 views
0

在運行這個簡單的腳本:如何讓mysqli_connect()工作?

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

在我的網路解決方案公司佔我收到此錯誤

連接失敗:無法通過套接字「/tmp/mysql.sock」連接到本地MySQL服務器(2 )

我給網絡解決方案技術支持打了兩次電話。他們「重新同步」服務器,並且我們重新驗證了「連接字符串」函數參數...但是沒有去。我嘗試從mysql_connect()切換到mysqli_connect()。

我不知道它可能是什麼。我知道成千上萬的NS客戶必須這樣做,但在他們的論壇上沒有找到答案。

請幫忙。任何有興趣爲我的網站中的股權工作的人,請讓我知道。

感謝

+0

你確定你的服務器是在本地主機上? – 2010-11-02 21:10:19

+0

你可以提供一些關於你係統的信息嗎?從元數據包安裝的MySQL是什麼操作系統?你是否在my.cnf中更改了所有配置? – KeatsKelleher 2010-11-02 21:12:16

回答

1

嘗試127.0.0.1而不是localhost要使用TCP/IP而不是通過本地套接字,這似乎是由於某種原因被打破的連接。

Background

0

你確定它應該是localhost?我知道Dreamhost不允許localhost連接通過 - 你必須連接到mysql.example.com

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。

1

下面的代碼可能會有所幫助!使用PDO

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

嘗試用這個例子作爲你的基礎

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

      ?>