2017-10-29 271 views
-4

從最近幾天開始漫遊,無法完成如何從主數據庫中單擊查看詳細信息按鈕時從數據庫中檢索特定行的數據。 [s_no is unique]如何從數據庫中檢索特定行的數據

這是我的主頁; view.php

<?php 
    include('dbconnect.php'); 
    $select=mysql_query("SELECT * FROM forms order by s_no desc"); 
    $i=1; 
    while($userrow=mysql_fetch_array($select)) 

    { 
    $s_no=$userrow['s_no']; 
    $title_pro=$userrow['title_pro']; 
    $institute=$userrow['institute']; 
    $email=$userrow['email']; 
    $contact=$userrow['contact']; 
    $date=$userrow['date']; 
?> 
<p align="center"><a href="submit_pro.php">View Paginated</a></p> 
<div class="display"> 
    <p> S.No : <span><?php echo $s_no; ?></span> 
    <p> Title of the proposal: <span><?php echo $title_pro; ?></span> 
    <a href="delete.php?id=<?php echo $s_no; ?>" 
    onclick="return confirm('Are you sure you wish to delete this 
Record?');"> 
      <span class="delete" title="Delete"> X </span></a> 
    </p> 
    <br /> 
    <p> Institute: <span><?php echo $institute; ?></span> 
    <a href="table_print.php?id=<?php echo $s_no; ?>"><span class="edit" 
title="Edit"> VIEW DETAIL</span></a> 
    </p> 
    <br /> 
    <p> Email: <span><?php echo $email; ?></span> 
    </p> 
    <br /> 
    <p> Contact name and address: <span><?php echo $contact; ?></span> 
    </p> 
    <br /> 
    <p> SUBMITTED ON : <span><?php echo $date; ?></span> 
    </p> 
    <br /> 
</div> 
<?php } ?> 

這主要頁面(view.php)工作正常。現在。一旦我點擊view.php(主頁面)上的視圖細節按鈕,它應該查看特定行的所有細節。 下面是table_print(詳細頁面)的代碼,這是不完整的,我不能這樣做。

<?php 

    $mysql_hostname = "localhost"; 
    $mysql_user = "root"; 
    $mysql_password =""; 
    $mysql_database = "iaoform_db"; 

// Create connection 
$conn = new mysqli($mysql_hostname, $mysql_user, $mysql_password, $mysql_database); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
    $id = $_GET['id']; //read id from get inputs 
    $sqli = "SELECT s_no, title_pro, type, cycle, type_pro, thesis, year, 
      proposer, institute, 
      email,present,contact,abstract,status_ongoing,status_file, 
     sch_request,no_night,no_night_impossible,just_request,mode_ob, 
      brief_descrip,plan,hfosc_b,hfosc_n,hfosc_g,hfosc_s,hesp_r,hesp_o, 
     tirspec_b,tirspec_n,tirspec_s,tirspec_c,tirspec_slits,obj_name,obj_ra, 
     obj_dec,obj_epoch,obj_mag,obj_size,scient_just,date, 

     status FROM forms WHERE s_no = ?"; //add a where clause with place 
             holder 
    $stmt = $conn->prepare($sqli); 
    $stmt->bind_param("i", $id); //bind input parameters 
    $stmt->execute(); 
    $stmt->store_result(); 
    /* Get the number of rows */ 
    $num_of_rows = $stmt->num_rows; 

    /* Bind the result to $row variable */ 
    $stmt->bind_result($row); 

    if($num_of_rows < 1){ //exit or send the result if number of rows is less than one 
     echo "Can't find any record!"; 
     mysqli_close($conn);  
     exit(); 
    } { 
    ?> 
<!----------------------------------------------------> 
<?php 
    while ($stmt->fetch()) 
    { 



<table class="tg"> 
    <tr> 
    <th class="tg-9hbo">S.No</th> 
    <th class="tg-yw4l" colspan="5"><?php echo $row["s_no"]; ?> </th> 
    </tr> 
    <tr> 
    <td class="tg-9hbo">Title of the proposal:</td> 
    <td class="tg-yw4l" colspan="5"><?php echo $row["title_pro"]; ?> 
</td> 
    </tr> 
    <tr> 
    <td class="tg-9hbo">Type:</td> 
    <td class="tg-yw4l" colspan="5"><?php echo $row["type"]; ?> </td> 
    </tr> 
    | 
    | 
    | 
    | 
    | 
    <tr> 
    <td class="tg-9hbo">Submission date:</td> 
    <td class="tg-yw4l" colspan="5"><?php echo $row["date"]; ?> </td> 
    </tr> 
    </table> 
     /* free results */ 
     $stmt->free_result(); 

    } 
    mysqli_close($conn); 
    ?> 

table_print.php它會很感激完成這個:

第二頁。提前感謝... !!!

回答

1

查詢中沒有WHERE子句來提取特定的行。該ID進入$_GET陣列。並且需要使用帶佔位符的準備語句來防止sql注入。試試下面的代碼

<?php 

     $mysql_hostname = "localhost"; 
     $mysql_user = "root"; 
     $mysql_password =""; 
     $mysql_database = "iaoform_db"; 

    // Create connection 
    $conn = new mysqli($mysql_hostname, $mysql_user, $mysql_password, $mysql_database); 
    // Check connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 
    $id = $_GET['id']; //read id from get inputs 
    $sqli = "SELECT s_no, title_pro, type, cycle, type_pro, thesis, year, 
    proposer, institute, 
    email,present,contact,abstract,status_ongoing,status_file, 

    sch_request,no_night,no_night_impossible,just_request,mode_ob, 
    brief_descrip,plan,hfosc_b,hfosc_n,hfosc_g,hfosc_s,hesp_r,hesp_o, 
    tirspec_b,tirspec_n,tirspec_s,tirspec_c,tirspec_slits,obj_name,obj_ra, 
    obj_dec,obj_epoch,obj_mag,obj_size,scient_just,date, 

     status FROM forms WHERE s_no = ?"; //add a where clause with place holder 
     $stmt = $conn->prepare($sqli); 
     $stmt->bind_param("i", $id); //bind input parameters 
     $stmt->execute(); 
     $stmt->store_result(); 
     /* Get the number of rows */ 
     $num_of_rows = $stmt->num_rows; 

     /* Bind the result to $row variable */ 
     $stmt->bind_result($row); 

     if($num_of_rows < 1){ //exit or send the result if number of rows is less than one 
      echo "Can't find any record!"; 
      mysqli_close($conn);  
      exit(); 
     } { ?> 
    <!----------------------------------------------------> 
    <?php 
     while ($stmt->fetch()) 
     { ?> 

    <table class="tg" id="myModal"> 
     <tr> 
     <th class="tg-9hbo">S.No</th> 
     <th class="tg-yw4l" colspan="5"><?php echo $row["s_no"]; ?> </th> 
     </tr> 
     <tr> 
     <td class="tg-9hbo">Title of the proposal:</td> 
     <td class="tg-yw4l" colspan="5"><?php echo $row["title_pro"]; ?> 
    </td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo">Type:</td> 
     <td class="tg-yw4l" colspan="5"><?php echo $row["type"]; ?> </td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo">Number of cycles/nights:</td> 
     <td class="tg-yw4l" colspan="5"><?php echo $row["cycle"]; ?> </td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo">Type of the proposal:</td> 
     <td class="tg-yw4l" colspan="5"><?php echo $row["type_pro"]; ?> </td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo">Title of the thesis:</td> 
     <td class="tg-yw4l" colspan="5"><?php echo $row["thesis"]; ?> </td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo">Expected year of thesis submission:</td> 
     <td class="tg-yw4l" colspan="5"><?php echo $row["year"]; ?> </td> 
     </tr> 
     <tr> 
     <td class="tg-amwm" colspan="6">List of Proposer:</td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo" colspan="2">Proposer</td> 
     <td class="tg-9hbo">Institute</td> 
     <td class="tg-9hbo">Email</td> 
     <td class="tg-9hbo" colspan="2">Present</td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo" colspan="2"><?php echo $row["proposer"]; ?> </td> 
     <td class="tg-yw4l"><?php echo $row["institute"]; ?> </td> 
     <td class="tg-yw4l"><?php echo $row["email"]; ?> </td> 
     <td class="tg-yw4l" colspan="2"><?php echo $row["present"]; ?> </td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo">Contact name and address:</td> 
     <td class="tg-yw4l" colspan="5"><?php echo $row["contact"]; ?> </td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo">Abstract:</td> 
     <td class="tg-yw4l" colspan="5"><?php echo $row["abstract"]; ?> </td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo" colspan="2">Status of ongoing/Previous 
    proposal</td> 
     <td class="tg-9hbo" colspan="4">Attached file</td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo" colspan="2"><?php echo $row["status_ongoing"]; ?> 
      </td> 
     <td class="tg-yw4l" colspan="4"><?php echo $row["status_file"]; ?> 
     </td> 
     </tr> 
     <tr> 
      <td class="tg-9hbo">Scheduling request:</td> 
     <td class="tg-yw4l" colspan="5"><?php echo $row["sch_request"]; ?> 
     </td> 
     </tr> 
     <tr> 
     <td class="tg-amwm" colspan="6">No. of nights requested</td> 
     </tr> 
     <tr> 
     <td class="tg-amwm" colspan="2">Preferred dates</td> 
     <td class="tg-amwm" colspan="4">Impossible date</td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo" colspan="2"><?php echo $row["no_night"]; ?> </td> 
     <td class="tg-yw4l" colspan="4"><?php echo $row["no_night_impossible"]; 
    ?> </td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo">Justification for scheduling request:</td> 
     <td class="tg-yw4l" colspan="5"><?php echo $row["just_request"]; ?> 
     </td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo">Instrument:</td> 
     <td class="tg-yw4l" colspan="5"><?php echo $row["instru1"]; ?> </td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo">Mode of Observation:</td> 
     <td class="tg-yw4l" colspan="5"><?php echo $row["mode_ob"]; ?> </td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo">Brief description of observations:</td> 
     <td class="tg-yw4l" colspan="5"><?php echo $row["brief_descrip"]; ?> 
    </td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo">Plans for data reduction and analysis:</td> 
     <td class="tg-yw4l" colspan="5"><?php echo $row["plan"]; ?> </td> 
     </tr> 
     <tr> 
     <td class="tg-amwm" colspan="6">HFOSC</td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo" colspan="2">Broad Band Filters</td> 
     <td class="tg-9hbo">Narrow Band Filters</td> 
     <td class="tg-9hbo">Grisms</td> 
     <td class="tg-9hbo" colspan="2">Slits</td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo" colspan="2"><?php echo $row["hfosc_b"]; ?> </td> 
     <td class="tg-yw4l"><?php echo $row["hfosc_n"]; ?> </td> 
     <td class="tg-yw4l"><?php echo $row["hfosc_g"]; ?> </td> 
     <td class="tg-yw4l" colspan="2"><?php echo $row["hfosc_s"]; ?> </td> 
     </tr> 
     <tr> 
     <td class="tg-amwm" colspan="6">HESP</td> 
     </tr> 
     <tr> 
     <td class="tg-amwm" colspan="2">Resolution</td> 
     <td class="tg-amwm" colspan="4">Observation mode</td> 
     </tr> 
     <tr> 
     <td class="tg-amwm" colspan="2"><?php echo $row["hesp_r"]; ?> </td> 
     <td class="tg-yw4l" colspan="4"><?php echo $row["hesp_o"]; ?> </td> 
     </tr> 
     <tr> 
     <td class="tg-amwm" colspan="6">TIRSPEC</td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo">Broad Band Filters</td> 
     <td class="tg-9hbo">Narrow Band Filters</td> 
     <td class="tg-9hbo">Single Order Dispersers</td> 
     <td class="tg-9hbo">Cross Dispersers</td> 
     <td class="tg-9hbo" colspan="2">Slits</td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo"><?php echo $row["tirspec_b"]; ?> </td> 
     <td class="tg-yw4l"><?php echo $row["tirspec_n"]; ?> </td> 
     <td class="tg-yw4l"><?php echo $row["tirspec_s"]; ?> </td> 
     <td class="tg-yw4l"><?php echo $row["tirspec_c"]; ?> </td> 
     <td class="tg-yw4l" colspan="2"><?php echo $row["tirspec_slits"]; ?> 
    </td> 
     </tr> 
     <tr> 
     <td class="tg-amwm" colspan="6">List of objects: (essential)</td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo">Name</td> 
     <td class="tg-9hbo">RA (hh mm ss)</td> 
     <td class="tg-9hbo">Dec (dd mm ss)</td> 
     <td class="tg-9hbo">Epoch</td> 
     <td class="tg-9hbo">V mag</td> 
     <td class="tg-9hbo">size</td> 
     </tr> 
     <tr> 
     <td class="tg-yw4l"><?php echo $row["obj_name"]; ?> </td> 
     <td class="tg-yw4l"><?php echo $row["obj_ra"]; ?> </td> 
     <td class="tg-yw4l"><?php echo $row["obj_dec"]; ?> </td> 
     <td class="tg-yw4l"><?php echo $row["obj_epoch"]; ?> </td> 
     <td class="tg-yw4l"><?php echo $row["obj_mag"]; ?> </td> 
     <td class="tg-yw4l"><?php echo $row["obj_size"]; ?> </td> 
     </tr> 
     <tr> 
      <td class="tg-9hbo">Scientific Justification:</td> 
     <td class="tg-yw4l" colspan="5"><?php echo $row["scient_just"]; ?> 
    </td> 
     </tr> 
     <tr> 
     <td class="tg-9hbo">Submission date:</td> 
     <td class="tg-yw4l" colspan="5"><?php echo $row["date"]; ?> </td> 
     </tr> 


    </table> 
<?php 
      /* free results */ 
      $stmt->free_result(); 

     } 
     mysqli_close($conn); 
    ?> 
+0

@N Moeini非常感謝你的努力。我得到語法錯誤,意外的'<'錯誤...請再次檢查 – explorer104

+0

固定。再次測試。 –

+0

@ explorer104,你有沒有嘗試過嗎? –

0

看來您已經將s_no作爲URL參數id傳遞到第二頁。因此,第二頁需要提取它(即id = $_GET['id']),那麼您可以在SQL查詢中使用它來添加WHERE s_no = id

注意:在將SQL放入SQL之前,您需要引用任何字符串,否則您將會遇到SQL注入漏洞(即Internet上的任何人都可能會刪除您的數據庫)。使用prepared statements

此外,如果s_no是唯一的,則在第二頁上不需要while - 您可以獲取單個行(如果存在)。

+0

非常感謝您的回覆...即時通訊新的PHP ..如何做到這一點,你可以請爲我做。謝謝 – explorer104

+0

@ explorer104堆棧溢出不是一個代碼寫入服務。我們可以幫助您解決具體問題,但我們無法爲您做好工作。 – jurez

0

您打開PHP的標記,但沒有關閉它這就是爲什麼你越來越語法錯誤

一定是有問題的查詢語句,確保表名和列名權

 $sqli = "SELECT s_no, title_pro, type, cycle, type_pro, thesis, year, 
     proposer, institute, 
     email,present,contact,abstract,status_ongoing,status_file, 
     sch_request,no_night,no_night_impossible,just_request,mode_ob, 
     brief_descrip,plan,hfosc_b,hfosc_n,hfosc_g,hfosc_s,hesp_r,hesp_o, 
    tirspec_b,tirspec_n,tirspec_s,tirspec_c,tirspec_slits,obj_name,obj_ra, 
    obj_dec,obj_epoch,obj_mag,obj_size,scient_just,date, 

    status FROM forms WHERE s_no = ?"; 
+0

@ pranjal k現在確切的錯誤行是....「調用成員函數bind_param()對一個非對象在C:\ wamp \ www line 35「中,第35行是$ stmt-> bind_param(」i「,$ id); //綁定輸入參數...這意味着什麼,請修復它 – explorer104

相關問題