簡體   English   中英

如何使用Foreach在PHP中顯示MYSQL全文查詢的輸出

[英]How to Display output from MYSQL Full-Text query in PHP using Foreach

我讀了這篇文章,但我真的不明白。. 在PHP中檢索MySQL全文搜索的匹配上下文(和安全性)

我如何使用Foreach在PHP中顯示來自MYSQL全文查詢的數據。當我嘗試執行此操作時,實際上僅檢索到1行,而當我嘗試使用MYSQL工作台時,它將輸出2行。

這是我的代碼:

if (isset($_GET['search'])) {
    $s = htmlspecialchars($_GET['search']);
    $search = $conn->prepare("SELECT * FROM files WHERE MATCH (docu_title,description) AGAINST (:s)");
    $search->bindParam(':s', $s);
    $search->execute();
    $find = $search->rowCount();
    $search->fetch();
    if ($find == 0) {
        $searching =  0;
     }
     else{
        $searching = 1;
     } 
}

我的PHP代碼

<?php
                    if (isset($searching)) {
                        if ($searching != 0) {
                            foreach($search as $sss)
                            {
                                echo "<td>" . $sss['docu_title'] . "</td>";
                                echo "<td>" . $sss['description'] . "</td>";
                                echo "<td><a href='downloads?id=" . $sss['id'] . "'>download</a></td>";
                            }
                        }
                    }
                    ?>

請幫我這個..我還是新手。 謝謝 :)

刪除所有$find = $search->rowCount(); 垃圾。

也可以使用while()遍歷所有返回的記錄,而不是foreach() 要使用foreach()您需要使用fetchAll()返回所有記錄,而不是fetch()僅返回1。

$search = $conn->prepare("SELECT * FROM files WHERE MATCH (docu_title,description) AGAINST (:s)");
$search->bindParam(':s', $s);
$search->execute();
while($sss =$search->fetch());
{
    echo "<td>" . $sss['docu_title'] . "</td>";
    echo "<td>" . $sss['description'] . "</td>";
    echo "<td><a href='downloads?id=" . $sss['id'] . "'>download</a></td>";
}   

對於每個$ search-> fetch(),您將獲取一行,而光標將移至下一行,因此,每次在表中填充第二行時。 因此,在第一個代碼中刪除$ search-> fetch(),它將顯示所有行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM