与 mysqli() 的连接不起作用,为什么?

Connection with mysqli() does not work, why?

我在连接到 Microsoft Azure 中的 mysql 数据库时遇到一个奇怪的问题。当我使用此命令连接到数据库时,查询成功。

$con = mysql_connect($mysql_db_hostname, $mysql_db_user, $mysql_db_password) or die("Could not connect database");
mysql_select_db($mysql_db_database, $con) or die("Could not select database");

但是当我使用这个命令时它不起作用:

$con = new mysqli($mysql_db_hostname, $mysql_db_user, $mysql_db_password, $mysql_db_database);
if ($con->connect_error)
{
    die("Database selection failed: " . $con->connect_error);   
}

我没有收到消息 "Database selection failed: "。 $con->connect_error。知道为什么第一个代码有效而另一个无效吗?

我正在为此 php 代码使用连接:

<?php  require_once ("/connect.php");
if(isset($_POST['username']) && !empty($_POST['username'])){
     $username=mysql_real_escape_string($_POST['username']);
}else{
     $message[]='Please enter username';
}
if(isset($_POST['password']) && !empty($_POST['password'])){
     $password=mysql_real_escape_string($_POST['password']);
}else{
     $message[]='Please enter password';
}
$countError=count($message);
if($countError > 0){
 for($i=0;$i<$countError;$i++){
          echo ucwords($message[$i]).'<br/><br/>';
 }
}else{
   $query="select * from users where username='$username' and password='$password'";
   $res=mysql_query($query);
   $checkUser=mysql_num_rows($res);
   if($checkUser > 0){
      echo 'correct';
   }else{
       echo ucwords('please enter correct user details');
   }
}

您不能混合匹配 mysql_* 函数和 mysqli_* 函数。您要么使用所有 mysql_*(已弃用),要么使用所有 mysqli_* 函数。 显然,您更改了连接,但尚未更改,例如 mysqli_query 到 mysqli_query 等

请注意,这两个 API 之间不一定是一一对应的。换句话说,您不能只添加一个 "i" 并希望它始终有效 - 您需要考虑一些概念和句法等方面的变化。

无论如何,查看 PHP 代码中出现的每个 "mysql_" 并将其转换为使用 "mysqli_*" 函数,这应该可以解决您的问题。