Попытка подключиться с помощью PHP к удаленному SQL Server. Ошибка «Не удалось установить соединение» - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь вставить данные из формы PHP в удаленную базу данных SQL Server.

Когда я нажимаю кнопку подтверждения, появляется сообщение об ошибке:

Предупреждение: mysqli_query () ожидает, что параметром 1 будет mysqli, ресурс указан в C: \ wamp64 \ www \ connection \ connection.php в строке 30

И ошибка: Не удалось установить соединение. Array ([0] => Массив ([0] => 01000 [SQLSTATE] => 01000 [1] => 5701 [код] => 5701 [2] => [Microsoft] [Драйвер ODBC 13 для SQL Server] [SQL Server] изменен контекст базы данных для «рабочего процесса». [message] => [Microsoft] [Драйвер ODBC 13 для SQL Server] [SQL Server] Изменен контекст базы данных на «Рабочий процесс». ) [1] => Массив ([0] => 01000 [SQLSTATE] => 01000 [1] => 5703 [код] => 5703 [2] => [Microsoft] [Драйвер ODBC 13 для SQL Server] [SQL Server] Изменены языковые настройки на us_english. [сообщение] => [Microsoft] [Драйвер ODBC 13 для SQL Server] [SQL Server] Измененный язык установка на us_english. ))

Я установил драйвер ODBC.

connection.php:

<?php   
$servername = "server_ip"; 
$connectionInfo=array( "Database"=>"Workflow", "UID"=>"admin", 
"PWD"=>"pass");
$conn=sqlsrv_connect($servername, $connectionInfo);

 $ID = $_POST['id'];
 $Date = $_POST['date'];


        $sql = "INSERT INTO T1 (ID,Date) VALUES ('$ID','$Date')";

 if(mysqli_query($conn,$sql)) {
    echo "Connection established.<br />";
    }else{
    echo "Connection could not be established.<br/>";
    die(print_r(sqlsrv_errors(), true));
    }


if(!mysqli_query($conn,$sql)) {
echo 'Data not inserted';
} else {
echo 'Data inserted';
}

?>

Index.html:

<!DOCTYPE html>
<html>
    <head>    
        <link rel="stylesheet" type="text/css" href="style.css">
        <title>Form</title>
    </head>
    <body>
        <form action="connection.php" method="post">
            <div class="container">
            ID: <input type="text" name="id">
                        Date: <input type="text" name="date">
            </div>
            <input type="submit" value="insert">
        </form>
    </body>
</html>

1 Ответ

1 голос
/ 16 апреля 2019

Вы используете функции из двух разных расширений PHP - sqlsrv_ и mysqli_. Для подключения к MS SQL Server используйте функции sqlsrv_, они являются частью драйвера PHP для SQL Server .

Также учтите следующее:

  • использовать подготовленные операторы:
  • окружают имена столбцов [], если они являются зарезервированными ключевыми словами

Попробуйте с этим connection.php:

<?php   
# Connection
$servername = "server_ip"; 
$connectionInfo = array(
    "Database"=>"Workflow", 
    "UID"=>"admin", 
    "PWD"=>"pass"
);
$conn = sqlsrv_connect($servername, $connectionInfo);
if( $conn === false ) {
    echo "Error (sqlsrv_connect): ".print_r(sqlsrv_errors(), true);
    exit;
}

# Parameters
$id = $_POST['id'];
$date = $_POST['date'];
$params = array(&$id, &$date);

# Statement
$sql = "INSERT INTO T1 (ID, [Date]) VALUES (?, ?)";
$stmt = sqlsrv_prepare($conn, $sql, $params);
if ($stmt === false) {
    echo "Error (sqlsrv_prepare): ".print_r(sqlsrv_errors(), true);
    exit;
}
if (sqlsrv_execute($stmt)) {
    echo "Statement executed.\n";
} else {
    echo "Error (sqlsrv_execute): ".print_r(sqlsrv_errors(), true);
}

# End
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...