2017-04-09 47 views
0

我試圖尋找解決方案,但找不到一個解決方案。在我的PHP頁面上,我試圖在兩個條件下搜索記錄,如果用戶在搜索框中輸入內容然後根據該內容顯示,並且如果他不搜索任何內容,則從表中顯示記錄。試圖在php下運行兩個sql查詢,如果其他條件?

我得到的所有記錄,但無法獲取記錄時,我用他們的名字搜索他們。

<?php 
if(isset($_POST['search'])) 
{ 
$name=$_POST['src']; 
$qry1=mysqli_query($connection,"select * from test_history where 
username='$name'"); 
} 
else 
{ 
$qry1=mysqli_query($connection,"select * from test_history"); 
$counter=0; 
while($ftc=mysqli_fetch_array($qry1)) 
echo 
'<tr> 

<td align="center"> '.++$counter.' </td> 
<td> '.$ftc['username'].' </td>  
<td> '.$ftc['enrollment'].' </td> 
<td> '.$ftc['test_cat'].' </td> 
<td> '.$ftc['test_name'].' </td> 
<td> '.$ftc['score'].'% </td> 
<td> '.$ftc['test_date'].' </td> </tr>'; 

} 
    if(isset($_POST['submit'])) 
    { 
    $dlt=mysqli_query($connection,"delete from test_history"); 
    } 
?> 
+0

*發生了什麼?這個失敗具體如何?注意:你的代碼對SQL注入非常開放(所以我們不知道你實際運行的是什麼SQL查詢)並且你沒有用'mysqli_error($ connection)'檢查錯誤(所以你不知道是否/查詢失敗的方式)。 – David

+0

它沒有輸出任何結果只是空表。錯誤代碼被寫入另一個文件,未列出。對不起,我是PHP的新手,每天都在學習。你能告訴我什麼是防止SQL注入的最佳方法!順便說一句,我的問題已解決。 –

+0

不確定您的意思是「錯誤代碼是否寫入另一個文件」。你應該看看'mysqli_error'函數來檢查代碼中的錯誤。至於SQL注入,這是一個很好的開始:https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php – David

回答

2

可能是因爲顯示結果的表在「else」塊內。試着把它弄到外面去。

 <?php 
    if(isset($_POST['search'])) 
    { 
    $name=$_POST['src']; 
    $qry1=mysqli_query($connection,"select * from test_history where 
    username='$name'"); 
    } 
    else 
    { 
    $qry1=mysqli_query($connection,"select * from test_history"); 
    $counter=0; 
    } 

// ... // 

    while($ftc=mysqli_fetch_array($qry1)) 
    echo 
    '<tr> 

    <td align="center"> '.++$counter.' </td> 
    <td> '.$ftc['username'].' </td>  
    <td> '.$ftc['enrollment'].' </td> 
    <td> '.$ftc['test_cat'].' </td> 
    <td> '.$ftc['test_name'].' </td> 
    <td> '.$ftc['score'].'% </td> 
    <td> '.$ftc['test_date'].' </td> </tr>'; 

// ... // 

     if(isset($_POST['submit'])) 
     { 
     $dlt=mysqli_query($connection,"delete from test_history"); 
     } 
    ?> 

發生了什麼將代碼

裏面的「其他」塊任何部分將會被執行時的否定「如果」條件滿足,即,isset($ _ POST [」之後搜索'])是「假」。負責顯示數據的代碼部分位於「else」塊內,這意味着只有當isset($ _ POST ['search'])返回false時纔會顯示數據。

顯然,那不是你想要的。您總是想要顯示數據,並且您想要根據$ _POST ['search']值更改查詢。第二個要求是通過if語句實現的。請參閱http://php.net/manual/en/control-structures.else.php

+0

Jazakallah(謝謝)..我是新的PHP編程,所以沒有嘗試過。你能告訴我背後的原因嗎?仍然顯示沒有找到「$ counter」,只是將其移出「其他」塊。 (在「while」之前)。瞧! –

+0

還有一件事,如果我想根據「從這個日期」到「這個日期」獲取這些記錄,我應該應用什麼邏輯。謝謝.. –

+0

嗨。我更詳細地更新了主要答案。 –

相關問題