что является лучшим способом для создания соединения между PHP и SQL-сервером, которые являются отдельными? (два сервера: сервер SQL и сервер b PHP) замечают, что я использую wamp.
Я прочитал некоторые статьи, как показано ниже, но я хочу знать, есть ли какая-то новая идея?
Я тестирую этот код, который отлично работает:
try{ $user = 'user'; $password = 'pass'; $server="localhost";//or server IP $database="database"; $conn = odbc_connect("Driver={SQL Server};Server=$server;Database=$database;", $user, $password); } catch (PDOException $e) { echo "Failed : " . $e->getMessage() . "\n"; exit; }
Я использую метод PDO_ODBC:
1- Установите ODBC на сервер, на котором есть wamp, и разрешите расширение PHP_PDO_ODBC на вашем сервере
2- Используйте этот код, который поддерживает UTF-8:
try{ $hostname = "IP"; $dbname = "database"; $username = "username"; $pw = "password"; $pdo = new PDO ("odbc:Driver={SQL Server Native Client 10.0};Server=$hostname;Database=$dbname; Uid=$username;Pwd=$pw;"); } catch (PDOException $e) { echo "Failed : " . $e->getMessage() . "\n"; exit; } $query = $pdo->prepare("select field_name from table"); $query->execute(); for($i=0; $row = $query->fetch(); $i++){ echo iconv("CP1256","UTF-8", $row['field_name'])."<br>"; }
3- замените эти предметы своими:
IP-база-имя пользователя-пароль-field_name стол
4- иногда вам нужно использовать «SQL SERVER» вместо «SQL Server Native Client 10.0», и иногда вам нужно использовать «IP, порт» вместо «IP», а иногда вам нужно использовать «ISO-8859-6» вместо «CP1256 ».
Из руководства по PHP: http://php.net/manual/en/pdo.construct.php
Пример # 1 Создайте экземпляр PDO с помощью вызова драйвера
<?php /* Connect to a SQL Server database using driver invocation */ $dsn = "sqlsrv:Server=12345abcde.database.windows.net;Database=testdb", "UserName@12345abcde", "Password"; try { $dbh = new PDO($dsn); } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); } ?>
Просто измените HOST ip на IP и порт вашего сервера mysql.