簡體   English   中英

從名稱為%O%的表中選擇*

[英]select * from table where name like %O%

在phpMyAdmin中查詢

SELECT * FROM table WHERE value1 LIKE '%O%' OR value2 LIKE '%1%'

很好地返回所有包含O或1的行。

但是,用PHP腳本實現的同一查詢僅返回匹配O或1的第一行。而不顯示匹配O或1的所有行。

這是我當前的PHP腳本:

mysqli_select_db ($con, $database) or die (mysqli_error());

            $sqli = mysqli_query ($con,"SELECT * FROM table WHERE VALUE1 LIKE '%O%' OR VALUE2 LIKE '%1%'") or die (mysqli_error()); 

            $echo = mysqli_fetch_assoc($sqli);

            if (empty ($echo))
            {
                echo "No matching results found.";
            }
            else
            {
                echo "<table width='50%' border='1'>";
                echo "<tr><th>VALUE1</th><th>VALUE2</th></tr>";
                echo "<tr><td>{$echo["VALUE1"]}</td>";
                echo "<td>{$echo["VALUE2"]}</td></tr>";
            }

輸出僅是第一匹配行。 而不是所有匹配的行。 另外,當我使用print_r而不是表行時。

您必須像這樣循環遍歷所有行

if( !mysqli_num_rows($sqli) )
{
    echo "No matching results found.";
} else {
    $table = "<table width='50%' border='1'>\n";
    $table .= "<tr><th>VALUE1</th><th>VALUE2</th></tr>\n";
    while( $echo = mysqli_fetch_assoc($sqli) )
    {
        $table .= "<tr><td>{$echo['VALUE1']}</td><td>{$echo['VALUE2']}</td></tr>\n";
    }
    $table .= "</table>";
}

請注意,我添加了幾行代碼來對行進行計數,如果找不到匹配項,則會顯示一條消息(正如我的預期,這是您提出問題的目的)。


編輯:最好是使用內置的num_rows而不是重新發明輪子


編輯2:我有一種感覺,他不想讓表格重復每一行。 稍微更改代碼

暫無
暫無

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

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