使用PHP進行多列查詢的研究問題
P粉242126786
P粉242126786 2023-07-26 17:32:50
0
1
473
<p>我有一個問題。我需要透過在PHP上使用POST方法給定的子字串來查詢包含該子字串的所有文字。例如,如果我輸入一個"a"或一個類似"1"的數字(字元而不是整數),我需要找到包含該字元或子字串的所有內容,並檢查表中的每一列是否可能?我嘗試過像這樣的方法,但是程式碼有些混亂。 </p> <pre class="brush:php;toolbar:false;"><?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"); } ?></pre> <p>已經嘗試過使用'%:usersearch%'或以任何形式組合%,但似乎我漏掉了某些東西,我完全確定,但我找不到它 :(</p>
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"] . "%"
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板