2015-10-02 9 views
1

Я тестировал php-скрипт для вставки в мою базу данных на сервере sql. Это действительно странная ошибка, и я сделал свое исследование, но я не мог определить, что его вызывает. Единственная ошибка, которую я получаю, - это ошибка внутреннего сервера 500. Я попробовал распечатать ошибку, но безрезультатно.Ошибка сервера 500 при запуске скрипта php

if($conn) { 
echo "Connection established.<br />"; 
$Fname=$_POST['FirstName']; 
$Lname=$_POST['LastName']; 
$sql = "INSERT INTO testTable (userFirstName, userLastName) VALUES (?, ?)"; 
$params = array("$Fname", "$Lname"); 
$stmt = sqlsrv_query($conn, $sql, $params); 
    if($stmt === false) { 
     echo sqlsrv_errors(); 
    } 
    else { 
     echo "Data transmitted successfully.<br />" 
    } 
}  

Сценарий, приведенный выше, является нарушением. Странно, когда я комментирую if ($ stmt === false) и т. Д., Сценарий работает отлично, и данные вставляются.

if($conn) { 
echo "Connection established.<br />"; 
$Fname=$_POST['FirstName']; 
$Lname=$_POST['LastName']; 
$sql = "INSERT INTO testTable (userFirstName, userLastName) VALUES (?, ?)"; 
$params = array("$Fname", "$Lname"); 
$stmt = sqlsrv_query($conn, $sql, $params); 
// if($stmt === false) { 
//  echo sqlsrv_errors(); 
// } 
// else { 
//  echo "Data transmitted successfully.<br />" 
// } 
} 

Приведенный выше код работает. Любые идеи, которые могут быть причиной этого на моем веб-сервере?

Говоря о моем веб-сервере, я запускаю его через веб-хостинг godaddy. В частности, я использую plesk для хостинга Windows.

+0

Это улов. Ничто не падает там. –

+0

Я на самом деле просто столкнулся с тем, почему он не попал в журналы ошибок сервера. Серверы godaddy не регистрируют ошибки php, если не создан файл инициализации. Я собираюсь попробовать это и посмотреть, могу ли я начать отслеживать, почему возникает ошибка. –

+0

Возможный дубликат [500 Внутренняя ошибка сервера для файла php не для html] (http://stackoverflow.com/questions/17693391/500- internal-server-error-for-php-file-not-for-html) –

ответ

0

YOu пытается использовать эхо, которое принимает строки как аргумент, давая sqlsrv_errors в качестве аргумента, который возвращает массив. Я думаю, что это причина, по которой вы получаете 500 ошибок.

Попробуйте использовать print_r() или var_dump() вместо:

if($stmt === false) { 
    var_dump(sqlsrv_errors);die; 
} 

Ссылка на руководство: http://php.net/manual/fr/function.sqlsrv-errors.php