什么是servername

时间:2017-01-06 10:03:49

标签: php mysql database mysqli phpmyadmin

我只想用php从表单中将数据插入数据库。我使用XAMPP在我的Localhost中运行下面的代码,一切都很好,但是我把它上传到我的主机它没有用。

问题是我为$ servername提出了什么,我应该何时寻找它?

有我的代码:

Register.php(在localhost中)

<?php

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";

$Name = $_POST['Name'];
$Username = $_POST['Username'];
$Password = $_POST['Password'];
$Email = $_POST['Email'];

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    header("Location:#");
}

//Inserting Data
 try{
$sql = "INSERT INTO User (uName , uUsername , uPassword , uEmail) VALUES ('$Name' , '$Username' , '$Password' , '$Email')";
mysqli_query($conn, $sql);
 }catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
 }
$conn->close();
header("Location:#");
}
?>

2 个答案:

答案 0 :(得分:0)

如果您的MySQL数据库在SAME SERVER上作为您的PHP脚本,那么通常的逻辑方法是您的主机是localhost。与您在本地计算机上使用的相同 - 因为它们位于同一台计算机上。

但是,如果您的MySQL数据库与您的PHP脚本分开在另一个服务器上,则需要使用Web地址访问该服务器,以便PHP连接到您的MySQL。

我们无法告诉您这是什么,您的服务器主机(您的MySQL服务器)将能够告诉您并为您提供正确的登录凭据。

我认为MySQL和PHP更常见的是在同一个磁盘上,特别是对于非专业系统,因此问题就是:

  • 您的服务器上的登录详细信息是否正确设置? (相同的用户名/密码)
  • 是否有MySQL errorsPDO errors(如果您与PDO连接)。不要重定向错误,而是将错误输出到日志文件中,这样您就可以阅读代码中的MySQL没有连接的原因。

  • 您仍然可以将PHP设置为通过远程地址(例如servername=$_SERVER['SERVER_NAME'];)与localhost MySQL进行通信。 (见下面的注释)

  • 许多在线帐户(例如CPanel等)会阻止您以root用户身份访问MySQL,或者至少不会向您提供root MySQL密码。使用root通过PHP访问MySQL是不是一个好主意,你应该为你的PHP设置一个特定的MySQL用户,只有你需要读取/写入数据库的足够权限,而不是更多

  • 如果您的MySQL是远程的(不是localhost),那么您可能还需要提供一个包含连接详细信息的端口号。通常的端口号是3306,但这是您需要从服务器主机获知的内容。

  • header(Location:);重定向指令后立即您应始终设置die();exit以停止PHP处理脚本的其余部分。

  • 您的SQL插入数据高度可以用于SQL注入和其他SQL攻击和攻击。你应该真的,真正地使用MySQL Prepared Statements,你已经用OO风格进行编码,所以你几乎已经在那里了。

来自the manual

远程连接示例

<?php
/***
 * Remember 3306 is only the default port number, and it could be 
 * anything. Check with your server hosts.
 ***/

$conn = new mysqli('remote.addr.org.uk', 'username', 'my_password', 'my_databasa', '3306');

/***
 * This is the "official" OO way to do it,
 * BUT $connect_error was broken until PHP 5.2.9 and 5.3.0.
 ***/
if ($conn->connect_error) {
    error_log('MySQL Connect Error (' . $conn->connect_errno . ') '
            . $conn->connect_error);
}

/***
 * Upon failure, the above will output a connection error notice such as 
 * user not  found or password incorrect. It won't explicity say these 
 * things but you should be able to deduce which from the notice 
 ***/

echo "Success... \n" . $conn->host_info ;

$mysqli->close();
  

:我似乎认为MySQL检测到给定的远程地址与服务器地址相同并自动将其转换为localhost,但我不确定就此而言。

     

如果您的MySQL ,那么它的长短不一样   服务器作为你的PHP开放网络循环是没有意义的   数据只是为了让它重新回来。请改用localhost

答案 1 :(得分:0)

我向我的主机服务提供商询问了&#34; $ servername&#34;他们回答我说'&$ 34; $ serverneme&#34;是localhost