<分区>
我正在尝试为 mySQL 数据库的单个表构建一个小型搜索工具。 遗憾的是,我无法将我的函数参数绑定(bind)到我的 sql 语句,我也不知道为什么。
这就是我认为它的工作原理。(也许您可以发现我的一般方法中的错误)
- 首先,参数 ($field) 通过在文件底部的函数调用中引用它来传递给函数。
- 我在 $dbh->prepare() 语句中引用 $field (:field) 的参数键。
- 变量 $field 作为参数与 $query->bindParam() 绑定(bind)
- 正在执行查询
- $field 用于从修改后的查询中提取标题。
我已经发现只有当我尝试将参数绑定(bind)到语句时才会出现问题。所以介于步骤 2-4 之间。
每当我将 $field 作为纯字符串插入(作为“标题”进入步骤 2+5)时,一切正常。但这不是很动态,因此我不能使用 functions 参数。
有没有人可以给我提示:)? 我很感激任何帮助。
<?php
// establish connection to database
$dbh = new PDO($server, $user, $pass);
/* function takes PDO object and a string that defines the column of our table that is supposed to be returned */
function searchField($dbh,$field){
if(isset($_POST['searchbar'])){
$searchInput = $_POST['searchbar'];
$searchInput = "%" . $searchInput . "%";
// (2)
$query = $dbh->prepare('SELECT * FROM docs WHERE :field LIKE :searchInput');
// (3)
$query->bindParam(':field',$field);
$query->bindParam(':searchInput',$searchInput);
// (4)
$query->execute();
foreach ($query as $doc){
// (5)
return $doc[$field];
}
}
}
?>
<form action="index.php" method="post" class="search-form">
<div class="searchbar-container">
<input class="searchbar" name="searchbar" placeholder="Enter a filename..."></input>
<button class="btn btn-default search-button " type="submit"><span class="glyphicon glyphicon-search submit-search" aria-hidden="true"></span></button>
</div>
</form>
<div class="result-title-container">
<?php
// (1) ==== The function call ====
echo "<h4>" . searchField($dbh,"title") . "</h4>";
?>
</div>