2016-10-14 23 views
-3

私はちょうどこのフォームを終了し、私はそれを働かせようとしているが、サーバーは私に500エラーをスローする。私はサーバーのログにアクセスすることはできません。私はここで検討しました。HTTP 500エラーが発生するのはなぜですか?

私はスマートな見積もりを確認し、見つけたものを置き換えました。私はそれをもう一度アップロードしました。なぜ私がまだこれを私に投げかけているのか分かりません。

<?php 
    $host = "localhost"; 
    $user = "username"; 
    $password = "password"; 
    $dbname = "database"; 
    $conn = mysqli_connect($host, $user, $password, $dbname); 

    if(!$conn){ 
     die("Connection failed: " . mysqli_connect_error()); 
    } ?> 

<?php 

    $studentID = intval($_POST['studentID']); 
    $fname = $_POST['fname']; 
    $fname = mysql_real_escape_string($fname); 
    $lname = $_POST['lname']; 
    $lname = mysql_real_escape_string($lname); 

    if($studentID != "") 
    { 
     if(($fname != "") && ($lname != "")) { 
      $sql = "SELECT * FROM Student WHERE StudentID = $studentID AND FirstName = $fname AND LastName = $lname"; 
     } 
     else if ($fname != "") { 
      $sql = "SELECT * FROM Student WHERE StudentID = $studentID AND FirstName = $fname"; 
     } 
     else if ($lname != "") { 
      $sql = "SELECT * FROM Student WHERE StudentID = $studentID AND LastName = $lname"; 
     } 
     else { 
      $sql = "SELECT * FROM Student WHERE StudentID = $studentID"; 
     } 
    } 
    else if($fname != "") 
    { 
     if($lname != ""){ 
      $sql = "SELECT * FROM Student WHERE FirstName = $fname AND LastName = $lname"; 
     } 
     else { 
      $sql = "SELECT * FROM Student WHERE FirstName = $fname"; 
     } 
    } 
    else if($lname != "") 
    { 
     $sql = "SELECT * FROM Student WHERE LastName = $lname"; 
    } 
    else { 
     echo "<p>There is no query to submit</p>"; 
    } 

    $result = mysqli_query($conn, $sql); 

    if(mysqli_num_rows($result) > 0){ 
     echo "<table><tr><th>Student ID</th><th>First Name</th><th>Last Name</th><th>Unit 1</th><th>Unit 2</th><th>Unit 3</th><th>Unit 4</th></tr>"; 

     while($row = mysqli_fetch_assoc($result)){ 
      echo "<tr><td>" .$row["StudentID"]. "</td><td>" .$row["FirstName"]. "</td><td>" .$row["LastName"]. "</td><td>" .$row["Unit1"]. "</td><td>" .$row["Unit2"]. "</td><td>" .$row["Unit3"]. "</td><td>" .$row["Unit4"]. "</td></tr>"; 
     } 

     echo "</table>" 
    } 
    else { 
     echo "There are no results for your query."; 
    } 

    mysqli_close($conn); 
?> 

私は何が表示されますかどうかを確認するために私のコンソール、すべてをチェックしましたが、私は空白を描いています。どんな助けもありがとう。

+3

を閉じていることに注意し、 '$のSQLが=「SELECT * StudentID = $ studentIDとFirstName = $ fnameとLastName = $ lname ";"文字列の値に引用符を使用していません他のクエリと同じですが、二番目はmysqlとmysqliを混合しています – devpro

+1

エラーを再度オンにしますエラーを移植/表示エラー、空白のページを取得する代わりに役立つ/エラー500 – Epodax

+0

[重引用符、二重引用符、およびバッククォートを使用する場合は?]の可能な重複の可能性があります(http://stackoverflow.com/questions/11321491/when-使用する単一引用符 - 二重引用符と二重引用符) – devpro

答えて

0

mysqli_と、廃止予定/廃止のmysql_拡張を混在させています。 mysqli_real_escape_stringを使用するか、バインド変数を使用する方がよいでしょう。バインド変数を使用していない場合は他の人が言ったようそして、あなたはだけのために、クエリあなたは、これはあなたがエラーや警告を見つけるのに役立ちますPHP error_reporting()を追加するために必要なすべての

1

まずを作成する際に、文字列を引用して注意する必要があります生産環境ではありません。

第二に、非常に重要な、あなたのようなあなたのSQL文での文字列値の前後に引用符を使用する必要があります。

$sql = "SELECT * FROM Student WHERE StudentID = $studentID AND FirstName = '$fname' AND LastName = '$lname'"; // same for other queries 

第三、なぜあなたは一緒にmysqli_*mysql_*を混合していますか?ここでmysqli_real_escape_string()関数を使用し、mysql_real_escape_string()を使用する必要があります。

第4のあなたのコードはまだSQLインジェクションのためにオープンされていますが、SQLアタックを防ぐ必要があります。

5つ:私はこれが誤植であることを願っています。echo "</table>"セミコロンはここにありません。


側注:

非常に特別なポイントmysql_*が原因でクエリの非推奨と多分PHP 7に

+0

私はすべてmysqli_に変更したときにmysql_を逃しました。私の教科書は引き続き廃止された用語を使用しています。 :/ – Moira

+0

@モイラ:今何がエラーですか? – devpro

関連する問題