同一 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`)
这将在 region
和 rank
两列中搜索参数。
旁注:
为了正确且一致地工作,两列必须具有相同的数据类型
使用准备好的语句!不要在查询字符串中连接变量;这是低效的,并且会打开您的代码以进行 SQL 注入。参见 How can I prevent SQL injection in PHP?
从 8.0.2 开始,rank
是一个 reserved word in MySQL,因此列名不是一个好的选择
我想知道如何在要搜索的搜索脚本中添加更多行。
这是我的 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`)
这将在 region
和 rank
两列中搜索参数。
旁注:
为了正确且一致地工作,两列必须具有相同的数据类型
使用准备好的语句!不要在查询字符串中连接变量;这是低效的,并且会打开您的代码以进行 SQL 注入。参见 How can I prevent SQL injection in PHP?
从 8.0.2 开始,
rank
是一个 reserved word in MySQL,因此列名不是一个好的选择