Вы не можете передать более одного оператора в sqlsrv_query () . В вашем случае у вас есть два варианта:
Комплексная инструкция:
Вы не можете передать более одного оператора в sqlsrv_query () . В вашем случае у вас есть два варианта: - Создать один сложный оператор T-SQL. В этом случае количество заполнителей должно соответствовать количеству передаваемых параметров.
- Выполнять каждую инструкцию отдельно
Комплексная инструкция:
[110] Примечания:
Драйвер PHP для SQL Server поддерживает несколько наборов результатов. Если вы используете один сложный оператор и один или несколько из ваших операторов являются SELECT
, вам нужно вызвать sqlsrv_next_result () , чтобы сделать следующий результат активным (первый результат активен по умолчанию).POST["addSomething"],
Вы не можете передать более одного оператора в sqlsrv_query () . В вашем случае у вас есть два варианта:
- Создать один сложный оператор T-SQL. В этом случае количество заполнителей должно соответствовать количеству передаваемых параметров.
- Выполнять каждую инструкцию отдельно
Комплексная инструкция:
[110] Примечания:
Драйвер PHP для SQL Server поддерживает несколько наборов результатов. Если вы используете один сложный оператор и один или несколько из ваших операторов являются SELECT
, вам нужно вызвать sqlsrv_next_result () , чтобы сделать следующий результат активным (первый результат активен по умолчанию).POST["addSomething"]
);
$stmt = sqlsrv_query($conn, $sql, $params);
if ($stmt === false ) {
# Your code here
} else {
# Your code here
}
...
?>
Примечания:
Драйвер PHP для SQL Server поддерживает несколько наборов результатов. Если вы используете один сложный оператор и один или несколько из ваших операторов являются SELECT
, вам нужно вызвать sqlsrv_next_result () , чтобы сделать следующий результат активным (первый результат активен по умолчанию).
Проблема здесь в том, что для того, чтобы узнать длину контента, вам нужно знать, поддерживает ли клиент кодировку gzip, и вы делегировали это решение с помощью ob_gzhandler. Из HTTP-заголовков :
ob_start (); ob_start ( 'ob_gzhandler'); ... выводить содержимое страницы ... ob_end_flush (); // ob_gzhandler one заголовок ('Content-Length:' .ob_get_length ()); ob_end_flush (); // Основной
Полная версия:
$filename = "style.css";
if (!file_exists($filename) || !($info = stat($filename))) {
header("HTTP/1.1 404 Not Found");
die();
}
header("Date: ".gmdate("D, j M Y H:i:s e", time()));
header("Cache-Control: max-age=2592000");
header("Last-Modified: ".gmdate("D, j M Y H:i:s e", $info['mtime']));
header("ETag: ".sprintf("\"%x-%x-%x\"", $info['ino'], $info['size'], $info['mtime']));
header("Accept-Ranges: bytes");
header("Expires: ".gmdate("D, j M Y H:i:s e", $info['mtime']+2592000));
header("Content-Type: text/css"); // note: this was text/html for some reason?
ob_start();
ob_start("ob_gzhandler");
echo file_get_contents($filename);
ob_end_flush();
header('Content-Length: '.ob_get_length());
ob_end_flush();
Это намного лучше, чем самостоятельно решать проблему кодирования gzip.
Сначала необходимо выполнить весь gzip и измерить результат (либо сохранить содержимое в памяти, либо записать его на диск при сжатии, а затем записать файл gzip), а затем записать заголовок Content-Length, а затем отправьте содержимое файла.
Или используйте chunked Transfer Encoding .
Чтобы решить проблему с Firefox, я думаю, вам нужно включить заголовок («Content-Encoding: gzip»);
, чтобы браузер знал, как распаковать контент.
Что касается длины контента, вы можете просто отключить это значение или попытаться найти способ использовать «Transfer-Encoding: chunked» (вы не можете просто отправить этот заголовок, вам нужно специально отформатировать данные для этого). Вполне возможно, что ob_end_flush
автоматически разрешит чанкинг.
Я рекомендую вам получить wireshark и перехватить то, что отправляет ваш php-скрипт, и сравнить его с правильно работающим сервером, чтобы увидеть, какие заголовки и т. Д. Отсутствуют.