2017-01-06 4 views
-2

Я просто хотел вставить данные в базу данных из формы с помощью php. Я запустил код ниже в своем Localhost с помощью XAMPP, и все было хорошо, но я загрузил его на свой хост, но он не работал.Что такое имя сервера

Вопрос: Что я сказал для $ servername, и когда я должен его искать?

Существует мои коды:

register.php (в локальном хосте)

<?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:#"); 
} 
?> 
+1

Не объяснено ли это в документации mysqli? Проверьте http://php.net/manual/en/mysqli.construct.php –

+0

«когда я загружу его на свой компьютер», вероятно, вы хотите использовать ресурсы поставщиков хост-провайдеров. В этом случае: мы не можем вам сказать, вам нужно будет спросить своего хостинг-провайдера об этих деталях. Если, однако, вы сами управляете этим «хостом», поэтому используйте виртуальную или выделенную систему, тогда вы сами должны знать эти ценности, опять-таки с чем-то, с чем мы не можем справиться. – arkascha

+0

вы правы, но я думал, что если $ servername будет неестественным. Я также говорил с моими провайдерами хостинга, но у меня не было ответа. – payamQorbanpour

ответ

0

Если база данных MySQL находится на том же сервере, что и ваш PHP скрипт, то обычный логический подход является то, что ваш хост localhost. То же, что и на вашем локальном компьютере, потому что они находятся на одной машине.

Однако, если ваша база данных MySQL находится на ДРУГОЙ SERVER отдельно от ваших скриптов PHP, вам нужно будет получить доступ к этому серверу с помощью веб-адреса для вашего PHP для подключения к MySQL.

Мы не можем сказать вам, что это такое, и ваши серверные хосты (вашего сервера MySQL) смогут сообщить вам и предоставить вам правильные учетные данные.

Я считаю, что было бы более привычным для MySQL и PHP, чтобы быть на том же диске, особенно для непрофессиональных систем, как ваши, как представляется, так, то этот вопрос будет:

  • ли ваш Логин уточните настройки на вашем сервере? (то же имя пользователя/пароль)
  • Есть ли MySQL errors или PDO errors (при подключении с PDO). Не перенаправляйте ошибку, но вместо этого выводите ошибку в файл журнала, чтобы вы могли читать ПОЧЕМУ MySQL в вашем коде не подключался.

  • Вы по-прежнему можете установить ваш PHP для связи с вашим localhost MySQL через удаленный адрес (например, servername=$_SERVER['SERVER_NAME'];). (см примечание ниже)

  • Многие онлайн-счетов (в таких вещах, как CPanel) будет блокировать вас от доступа к MySQL как корень или, по крайней мере, не даст вам пароль корня MySQL. Использование root для доступа к MySQL через PHP: Неплохая идея, и вместо этого вы должны настроить определенного пользователя MySQL для своего PHP с достаточными правами, которые вам нужно читать/записывать в БД, и не более того.

  • Если ваш 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.

0

Я спросил своих поставщиков услуг хостинга о «$ servername», и они ответили мне, что «$ serverneme» - localhost.

Смежные вопросы