使用PHP进行多列查询的研究问题
P粉242126786
P粉242126786 2023-07-26 17:32:50
[PHP讨论组]

我有一个问题。我需要通过在PHP上使用POST方法给定的子字符串来查询包含该子字符串的所有文本。例如,如果我输入一个"a"或者一个类似"1"的数字(字符而不是整数),我需要找到包含该字符或子字符串的所有内容,并检查表中的每一列是否可能?我尝试过像这样的方法,但是代码有些混乱。

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $usersearch = $_POST["usersearch"];

    try {
        require_once "includes/dbh.inc.php";

        $query = "SELECT * FROM tlattine WHERE 
        tipologia LIKE :usersearch OR 
        nome LIKE :usersearch OR 
        caratteristiche LIKE :usersearch OR
        tabstyle LIKE :usersearch OR
        tabcolor LIKE :usersearch OR
        topstyle LIKE :usersearch OR
        topcolor LIKE :usersearch OR
        provenienza LIKE :usersearch OR
        produttore LIKE :usersearch OR
        sku LIKE :usersearch
        ORDER BY tipologia, provenienza, year, dimensione;";

        $stmt = $pdo->prepare($query);

        $stmt->bindParam(":usersearch", $usersearch);

        $stmt->execute();

        $results = $stmt->fetchAll(PDO::FETCH_ASSOC);

        $pdo = null;
        $stmt = null;
    } catch (PDOException $e) {
        die("Query failed: " . $e->getMessage());
    }
}
else{
    header("Location: ../index.php");
}
?>

已经尝试过使用'%:usersearch%'或以任何形式组合%,但似乎我漏掉了某些东西,我完全确定,但我找不到它 :(

P粉242126786
P粉242126786

全部回复(1)
P粉793532469

看到你的查询,我注意到你多次使用了参数:usersearch。

PHP文档中提到:

我更倾向于避免启用模拟模式,而是更改命名占位符为位置占位符(使用'?'代替':usersearch'),然后使用


$stmt->bindParam(1, $usersearch, PDO::PARAM_STR);
$stmt->bindParam(2, $usersearch, PDO::PARAM_STR);
$stmt->bindParam(3, $usersearch, PDO::PARAM_STR);
// and so on

最后一件事,如果你要查询使列包含$usersearch变量,你可能应该在字符串的开头和结尾添加%。

$usersearch = "%" . $_POST["usersearch"] . "%"
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号