【问题标题】:Error while connecting to Database on hosted server连接到托管服务器上的数据库时出错
【发布时间】:2015-11-22 02:00:51
【问题描述】:

警告:mysql_connect(): (HY000/2002): Connection denied in /home/vol14_1/byethost31.com/b31_16461744/htdocs/Mysql/con.php 上线 7

警告:mysql_select_db(): No such file or directory in /home/vol14_1/byethost31.com/b31_16461744/htdocs/Mysql/con.php 上线 8

警告:mysql_select_db():无法连接到服务器 建立在 /home/vol14_1/byethost31.com/b31_16461744/htdocs/Mysql/con.php 上线 8

我有以下代码

<?php 
     $localhost="localhost"; 
     $username=b31_16461744; 
     $pass=test123; 
     $dbname=b31_16461744_user; 
     $a= mysqli_connect($localhost,$user,$pass); 
     mysql_select_db($dbname); 
     if($a)
     { 
       echo "connected..";
     } 
     else 
     { 
       echo "not...!!"; 
     }
?>

【问题讨论】:

  • 你能提供你的php代码con.php吗?
  • @Alex code
  • @SUM 你将mysql_mysqli_ 混合在一起,你不能那样做。
  • 这些需要被引用 $username=b31_16461744; $pass=test123; $dbname=b31_16461744_user; 被视为常量,而不是字符串。
  • hm...但是@Fred-ii- 这次我引用了它....但是同样的错误再次出现...

标签: mysql server mysql-connect


【解决方案1】:

旁注:假设凭据是正确的,由您的虚拟主机提供给您。

这段代码有几个问题(取自您留下的评论)。

首先,您的三个声明没有被引用并且被视为常量。

PHP 错误报告会引发未定义常量的通知。

这些被视为常量:

 $username=b31_16461744; 
 $pass=test123; 
 $dbname=b31_16461744_user; 

您还为用户名 $user 引用了错误的变量,它应该是 $username。错误报告会签署未定义的变量通知。

然后您将 mysql_mysqli_ 语法混合在一起。那些不同的 MySQL API 不会混合使用。您必须在整个代码中使用相同的。

旁注:您发布的另一个问题Access denied for user 'test123'@'192.168.0.38' (using password: NO) 您正在使用sql306.byethost31.com 作为主持人。确保这是正确的。我不知道主持人希望您使用什么设置。

<?php 
     $localhost="localhost"; 
     $username="b31_16461744"; 
     $pass="test123"; 
     $dbname="b31_16461744_user"; 
     $a= mysqli_connect($localhost, $username, $pass); 
     mysqli_select_db($a, $dbname); 
     if($a)
     { 
       echo "connected..";
     } 
     else 
     { 
       echo "not...!!"; 
     }
?>

或者只使用所有四个参数:

<?php 
     $localhost="localhost"; 
     $username="b31_16461744"; 
     $pass="test123"; 
     $dbname="b31_16461744_user"; 
     $a= mysqli_connect($localhost, $username, $pass, $dbname); 

     if($a)
     { 
       echo "connected..";
     } 
     else 
     { 
       echo "not...!!" . mysqli_error($a); 
     }
?>

但是,带有回声的else 对您没有帮助。使用mysqli_error() 得到真正的错误。

即:or die("Error " . mysqli_error($a));

手册中的示例

$link = mysqli_connect("myhost","myuser","mypassw","mydb")
        or die("Error " . mysqli_error($link)); 

参考资料:


error reporting 添加到文件顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:只应在暂存阶段显示错误,而不应在生产阶段完成

【讨论】:

  • 拉尔夫。您现在在为初学者开设培训课程吗
  • @RiggsFolly 我以为山姆正在这样做?我想我继承了火炬 Smokey。
  • 感谢@Fred-ii-您推荐的链接对我帮助很大...再次感谢
  • @SUM 不客气。考虑接受答案。以下是meta.stackexchange.com/questions/5234/… 然后返回此处并对勾号/复选标记执行相同操作直到它变为绿色的方法。这会通知社区,找到了解决方案。否则,其他人可能会认为问题仍然悬而未决,可能想要发布(更多)答案。
  • @Fred-ii- 好的..只是最后一件事..我正在从数据库中检索数据,它已经开始无限循环并一直显示数据...... ???这是什么……??
【解决方案2】:

我认为凭据设置不正确。请参阅您的连接声明。 以供参考 : 在本地主机上工作时,我们将连接语句写为:

$con=mysql_connect("localhost","root","");
$db1=mysql_select_db("DatabaseName",$con);

但是,在服务器上工作时,我们需要更改以下凭据。 用户名和密码值是必须的。

    $con=mysql_connect("localhost","Username","password");
    $db1=mysql_select_db("DatabaseName",$con);

【讨论】:

  • 所以您仍在使用已弃用的 mysql_ 扩展。我希望你意识到 PHP7 不附带 mysql_ 数据库扩展。您将来可能应该考虑这一点,以及您编写的代码的未来。
猜你喜欢
  • 2014-03-17
  • 1970-01-01
  • 2013-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-19
  • 1970-01-01
  • 2020-07-08
相关资源
最近更新 更多