同一表中多行的搜索功能

问题描述

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

这是我的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版开始,rankreserved word in MySQL,因此不是列名的好选择

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...