2017-08-04 71 views
0

- 固定 -无法连接到PHP中的MySQLi?

我修正了我遇到的问题。我不是100%确定它是如何修复的,但我认为这是因为我将连接端口更改为3306,然后使用本地主机而不是我的IP连接。谢谢大家花时间帮忙,你们都非常乐于助人。

我有一个真的令人沮丧的问题,我一直在尝试解决(字面意思)过去4个小时。我无法通过我的php代码连接到MySQLi。我检查了用户名,密码,数据库和主机是否正确。这里是我的代码:

$mysqli = new mysqli("104.236.***.57", "Josh", "********", "******"); 

if ($mysqli->connect_errno) { 
    printf("Connect failed: %s\n", $mysqli->connect_error); 
    exit(); 
} 

所有这一切是回声连接。查询不返回任何东西(它就像一个空字符串)。当我尝试echo $连接时,它也是如此。我认为这是连接问题,因为它是空的,但你们最清楚(我是MySQL的新手)。我已经研究并尝试了4个多小时,并没有任何工作。

太感谢你了,

乔希

编辑:我已经更新的代码。现在它返回错误:连接被拒绝(mysql错误)。

我想我已经解决了连接问题,但是我遇到了一个我认为可能与另一个问题有关的新问题。我有这样的代码在这里:

$servername = "104.***.***.57"; 
$username = "Josh"; 
$password = "*******"; 
$dbname = "*****"; 

$conn = new mysqli($servername, $username, $password, $dbname, '/var/run/mysqld/mysqld.sock'); 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT * FROM users"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()) { 
     echo "id: " . $row["id"]; 
    } 
} else { 
    echo "0 results"; 
} 
$conn->close(); 

而且似乎工作,除了它打印“0结果”时,有1

+0

'$ query'是一个结果对象(或者也可能检查执行中的错误),您需要获取。 – chris85

+0

对不起,但你是什么意思? @ chris85 – Josh

+0

请参阅http://php.net/manual/en/mysqli-stmt.fetch.php和http://php.net/manual/en/mysqli.query.php关于后者的具体说明'在失败时返回FALSE 。对于成功的SELECT,SHOW,DESCRIBE或EXPLAIN查询,mysqli_query()将返回一个mysqli_result对象。对于其他成功的查询,mysqli_query()将返回TRUE.',所以你要么有'false','true'或'result object'。 – chris85

回答

0
enter code here 
<?php 

    $servername = "localhost"; //replace your servername 
    $username = "root"; //replace your username 
    $password = "";  //replace your password 
    $dbname = "test"; //replace your database name 

    // Create connection 
    $conn = mysqli_connect($servername, $username, $password, $dbname); 
    //Check connection 
    if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
     echo ' not connected'; 
    } 
    else 
    echo 'connected'; 
     ?> 

执行此操作并告诉我输出。

+0

'连接失败:连接被拒绝' – Josh

+0

这意味着连接字符串出错。你在本地服务器上工作还是什么? – Jok3r

-1

//只需填写自己的设置...

$server = "localhost"; 
$user = "root"; 
$password = "*****"; 
$database = "uyelik"; 
$db= mysqli_connect($server ,$user, $password); 
if(!$db) { echo 'Mysqli conn. error: ' . mysqli_connect_errno(); exit;} 
mysqli_select_db($db,$database); 
$query = mysqli_query($db,"SELECT * FROM lists") or die (mysql_error()); 
+0

'Mysqli conn。错误:2002'(抱歉有点迟了回复) – Josh

0

对于成功的SELECT,SHOW,描述或解释查询的mysqli ::查询(或mysqli_query())将返回一个mysqli_result对象(见本文mysqli.query)。 所以你的情况,你不能只是呼应这一点,你可以看到这样的行数据:

$mysqli = new mysqli("104.236.***.57", "Josh", "********", "******"); 

if ($mysqli->connect_errno) { 
    printf("Connect failed: %s\n", $mysqli->connect_error); 
    exit(); 
} 

/* If we have to retrieve large amount of data we use MYSQLI_USE_RESULT */ 
if ($result = $mysqli->query("SELECT * FROM users", MYSQLI_USE_RESULT)) { 
    /* prints number of result rows */ 
    printf("Select returned %d rows.\n", $result->num_rows); 
    /* Cycle through results */ 
    echo "Table data:\n"; 
    while ($row = $result->fetch_object()){ 
     var_dump($row); 
    } 
    /* free result set */ 
    $result->close(); 
} 

/* close connection */ 
$mysqli->close(); 

另外,检查你的数据库服务器进行远程访问提供(104.236 *** 57。)。如果您可以从外部访问数据库服务器,请咨询您的托管公司。

+0

我发现这不是查询给我的问题,但它是连接。我会更新帖子。 – Josh

+0

检查可用于远程访问的数据库服务器(104.236。***。57)。如果您可以从外部访问数据库服务器,请咨询您的托管公司。 –

+0

我发现了错误,但我不知道如何解决它。错误是:连接被拒绝(2002) – Josh

0

您可以检查Mysql是否正在运行。它通常发生在你的液滴耗尽内存时。在这种情况下,你可以添加一个交换文件到你的液滴。

+0

我如何检查如果MySQL运行@Sam – Josh

+0

你可以执行以下命令..#中mysqladmin -u根-p状态 – Sam

0
  $sql = "SELECT * FROM users"; 
      $result = mysqli_query($conn,$sql); 

      while($row = mysqli_fetch_array($result)) 
      { 
       echo "id: " . $row["id"]; 
      } 


       try this instead of your code 
      good luck!!!!