【问题标题】:How do I get mysqli_connect() to work?如何让 mysqli_connect() 工作?
【发布时间】:2011-05-04 04:26:45
【问题描述】:

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

<?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 帐户中,我收到了这个错误

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

我两次致电网络解决方案技术支持。他们“重新同步”了服务器,我们重新验证了函数参数的“连接字符串”……但不行。我尝试从 mysql_connect() 切换到 mysqli_connect()。

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

请帮忙。任何有兴趣在我的网站上争取股权的人也请告诉我。

谢谢

【问题讨论】:

  • 你确定你的服务器在本地主机上吗?
  • 你能提供一些关于你的系统的信息吗?什么操作系统,是从元包安装 MySQL 的吗?你在 my.cnf 中改变了配置吗?

标签: php


【解决方案1】:

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

Background

【讨论】:

    【解决方案2】:

    下面的代码可能会有所帮助!

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

    【讨论】:

      【解决方案3】:

      尝试使用 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();
                      }
      
                  ?>
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          让他们知道,他们不仅需要设置正确的mysql插件默认socket,还需要设置mysqli插件默认socket。

          来自我服务器的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。

          【讨论】:

            猜你喜欢
            • 2011-09-06
            • 2011-04-07
            • 2011-07-27
            • 2011-03-08
            • 2023-03-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多