2016-10-14 31 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 * FROM Student WHERE StudentID = $ studentID AND FirstName = $ fname AND LastName = $ lname「;'你沒有爲字符串值使用引號SAME for OTHER QUERIES,SECOND,你在混合mysql和mysqli – devpro

+1

打開錯誤re移植/顯示錯誤,應該幫助你,而不是得到一個空白頁/錯誤500 – Epodax

+0

可能重複[何時使用單引號,雙引號和反引號?](http://stackoverflow.com/questions/11321491/when-使用單引號雙引號和反引號) – devpro

回答

0

您在混合使用mysqli_與不推薦/刪除的mysql_擴展名。你應該使用mysqli_real_escape_string,或者更好的使用綁定變量。正如別人如果不使用綁定變量告訴你創建一個查詢

1

首先你需要添加PHP error_reporting()這將幫助您找到的錯誤和警告時要小心地使用引號字符串,但僅限於開發環境不適合生產。

,非常重要的,你需要使用字符串值的報價在你的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()

第四,您的代碼仍然是SQL注入打開,您必須防止與SQL攻擊,您可以使用準備語句爲此。

Five:我希望這是這裏的拼寫錯誤echo "</table>"這裏缺少分號。


側面說明:

非常特別的一點:注意mysql_*已被棄用,因爲您的查詢的PHP 7也許關閉

+0

當我將所有內容都更改爲mysqli_時,我錯過了mysql_。我的教科書仍然使用已棄用的術語。 :/ – Moira

+0

@Moira:現在有什麼錯誤? – devpro

相關問題