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

时间:2015-04-02 17:52:38

标签: php mysql mysqli database-connection

连接到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);   
}

我没有收到消息“数据库选择失败:”。 $ 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');
   }
}

1 个答案:

答案 0 :(得分:0)

你不能混合&amp; mysql_ *函数和mysqli_ *函数之间的匹配。要么使用ALL mysql_ *(不建议使用),要么使用所有mysqli_ *函数。 显然,你改变了连接,但是还没有改变,例如mysqli_query到mysqli_query等等。

请注意,2个API之间不一定存在一对一的对应关系。换句话说,你不能只添加一个&#34; i&#34;并希望它始终有效 - 您需要考虑一些概念和语法等变化。

无论如何,请查看&#34; mysql _&#34;在你的PHP代码中并将其转换为使用&#34; mysqli _ *&#34;功能,这应该可以解决你的问题。