同一 table 中多行的搜索功能

Search function on multiple rows in the same table

我想知道如何在要搜索的搜索脚本中添加更多行。

这是我的 php 脚本:

<?php

$con = new PDO("mysql:host=localhost;dbname=db",'user','');

if (isset($_POST["submit"])) {
    $str = $_POST["search"];
    $sth = $con->prepare("
SELECT * 
  FROM `players` 
 WHERE region = '$str'
");

    $sth->setFetchMode(PDO:: FETCH_OBJ);
    $sth -> execute();

    if($row = $sth->fetch())
    {
        ?>

如您所见:

SELECT * FROM `players` WHERE region = '$str'

我想让它搜索区域并对行进行排名。 我试过了:

SELECT * FROM `players` WHERE region, rank = '$str' 

.. 显示 0 个结果。

提前致谢。

这是你想要的吗?

SELECT * FROM players WHERE ? IN (region, `rank`)

这将在 regionrank 两列中搜索参数。

旁注:

  • 为了正确且一致地工作,两列必须具有相同的数据类型

  • 使用准备好的语句!不要在查询字符串中连接变量;这是低效的,并且会打开您的代码以进行 SQL 注入。参见 How can I prevent SQL injection in PHP?

  • 从 8.0.2 开始,rank 是一个 reserved word in MySQL,因此列名不是一个好的选择