2016-08-05 2 views
-3

Я пытаюсь настроить базовую веб-страницу, которая позволяет пользователю добавить строку в таблицу mysql в базе данных с целью включения светодиодного индикатора и с помощью ардуино. Однако, когда я пытаюсь отправить форму, страница возвращает состояние 500, и запрос mysql не выполняется. Я запускаю сервер linux-apache-mysql-php на своем компьютере. Почему это должно быть?Ошибка запроса сервера

<!doctype html> 
 
<html> 
 
     <head> 
 
       <title> ARDUINO CONTROL CENTER </title> 
 
       <meta charset = "utf-8"/> 
 
       <link rel = "stylesheet" type = "text/css" href = "#" /> 
 
     </head> 
 
     <body> 
 
       <h1> Welcome to the online arduino controller </h1> 
 
       <p> From here you can actually control an arduino in my room that will turn an LED light on and off. </p> 
 
       <form method = "get" action = "index.php"> 
 
         <select name = "action"> 
 
           <option value = "ON">ON</option> 
 
           <option value = "OFF">OFF</option> 
 
         </select> 
 
         <input type = "number" name = "duration"/> 
 
         <input type = "submit" /> 
 
       </form> 
 
     </body> 
 
</html> 
 
<?php 
 

 
     $host = 'localhost'; 
 
     $username = 'petros'; 
 
     $password = '**********'; //can't give my password 
 
     $dbc = mysql_connect($host,$username,$password) or die("Unable to connect to server"); 
 

 
     $db = 'ledrequests'; 
 
     $sdb = mysql_select_db($db,$dbc) or die("Unable to connect to database."); 
 

 
     if(isset($_GET['action']) && isset($_GET['duration'])){ 
 
       $action = $_GET['action']; 
 
       $duration = $_GET['duration']; 
 
       $query = "INSERT INTO requests(`act`,`duration`) VALUES ('$action',$duration)"; 
 
       mysql_query($query); 
 
     } 
 

 
?>

+2

Это довольно нормальная ситуация, с которой вы столкнетесь снова и снова. Некоторая ошибка в выполнении скрипта. Не очень эффективно пытаться _guess_ решить проблему _might_. Вместо этого загляните в свой файл журнала ошибок HTTP-серверов. Там php точно укажет на то, в какой проблеме он работал, в какой строке в каком-то скрипте. Статус http 500 является «внутренней ошибкой», поэтому, скорее всего, это скрипт, который разбился. Информация, которую вы получаете из этого файла журнала ошибок, поможет немедленно выявить проблему. Вы _cannot_ программа php, не контролируя этот файл. – arkascha

+1

Кроме того, общий намек: прекратите размещение html-формы и логики обработки в том же файле. Я знаю, что многие учебники показывают это именно так, но это просто безумный, неправильный, ненужный сложный. Имейте один файл (или набор сценариев), которые создают и доставляют форму, используют другой отдельный файл для обработки заявки на форму. Это разделяет отдельные вещи. – arkascha

+1

Если вы используете одну из поздних версий php, это потому, что все функции mysql_ удалены, используйте функции mysqli_ или pdo вместо – rypskar

ответ

0

HTTP код статуса 500 является «Внутренняя ошибка сервера», таким образом, соответствующее место, чтобы выяснить, что случилось с вашим кодом, проверяя журналы ошибок Apache.

Если вы используете WAMP: Where can I find the WAMP error log?

Если вы используете MAMP: https://sites.google.com/site/mamppro/en/mamp/faq/where-can-i-find-the-logs/where-can-i-find-the-apache-error-log

Если вы только на вкус Linux: /var/log/apache2/error.log

0

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

Сделайте свой скрипт для вывода запросов на странице или просмотрите журналы вашего сервера, если они доступны.

Вы должны обязательно найти что-то, что мы можем вам помочь в журналах apache.

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