php - select * from table 其中名称如 %O%

标签 php mysql sql

在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:我感觉他不希望表格的每一行都重复。稍微修改一下代码

关于php - select * from table 其中名称如 %O%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23968824/

相关文章:

MySql SP 不工作

mysql - 问题 : python manage. py syncdb in windows 7 with mysql

mysql - 在 ubuntu 中将 postgres 转储转换为 mysql 转储

php - 使用 MySQL/PHP 结果构建 HTML 表

php简历文件导入

mysql - 如何做多个封装的WHERE子句

mysql - 从另一个表中插入带有自动增量列的记录新表

php - 无论卡片标题如何,如何在同一位置制作 Bootstrap 卡片正文段落

php - preg_replace 匹配阿拉伯语中的整个单词

php - 在 PHP 中记录配置文件更新