2016-08-05 5 views
-3

사용자가 데이터베이스의 mysql 테이블에 행을 추가하여 LED 표시등을 켜고 arduino를 사용하는 기본 웹 페이지를 설정하려고합니다. 그러나 양식을 제출하려고하면 페이지가 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

이것은 매우 정상적인 상황으로 계속 반복 될 것입니다. 스크립트 실행 중 일부 오류. 어떤 이슈가 _ _ _ _되도록 노력하는 것은 그리 효과적이지 않습니다. 대신 http 서버 오류 로그 파일을 조사하십시오. PHP는 어떤 스크립트에서 어떤 라인에서 어떤 문제가 발생했는지 정확하게 지적합니다. http 상태 500은 "내부 오류"이므로 대부분 충돌하는 스크립트입니다. 해당 오류 로그 파일에서 얻은 정보는 즉시 문제점을 식별하는 데 도움이됩니다. 해당 파일을 모니터링하지 않고 php를 프로그래밍 할 수 없습니다. – arkascha

+1

일반적인 힌트와는 별도로 HTML 폼과 처리 로직을 같은 파일에 배치하는 것을 중단하십시오. 나도 알아, 많은 자습서 그런 식으로 그것을 보여줍니다,하지만 그것은 단순히 미친, 잘못, 불필요한 복잡한 것입니다. 양식을 작성하여 제공하는 하나의 파일 (또는 스크립트 세트)을 가지며 양식 제출을 처리하기 위해 별도의 다른 파일을 사용하십시오. 그것은 분리 된 것들을 분리시킵니다. – arkascha

+1

최신 버전의 PHP를 사용하는 경우 모든 mysql_ 함수가 제거 되었기 때문에 mysqli_ 함수 또는 pdo를 대신 사용하십시오. – rypskar

답변

0

어디서나 PHP-MySQL 확장자 누락과 MySQL 비밀번호 오타와 잘못된 쿼리 구문으로 끝날 수 있습니다.

스크립트를 페이지에서 쿼리 출력을 수행하거나 사용 가능한 경우 서버 로그를 조사하십시오.

우리는 아파치 로그에서 도움이 될만한 것을 찾아야합니다.

관련 문제