我正在为我的数据库设置基本搜索查询并将其返回到表中。我遇到了在预准备语句中使用的语法问题。
我的初步设置基于w3schools的例子。
搜索输入来自html page
上的表单。这会调用php file
。
在php file
内,我连接到SQL server
并执行以下操作:
$search = $_POST['search'];
$stmt = $link->prepare("SELECT lname, fname FROM planner WHERE lname LIKE ?");
$stmt->bind_param('s', $search);
$stmt->execute();
$result = $stmt->get_result();
print_r($result);
if ($result->num_rows > 0) {
echo "<table><tr><th>Last Name</th><th>First Name</th></tr>";
while($row = $result->fetch_assoc()) {
echo "<tr><td>".$row["lname"]."</td><td>".$row["fname"]."</td></tr>";
}
echo "</table>";
} else {
echo "0 results";
}
我遇到的挑战是如何定义LIKE的parameters
以在预准备语句构造中进行评估。 W3Schools使用LIKE parameters
的各种组合提供了大量letters and %
的例子,但我不确定在准备好的陈述中将这些放在哪里。我希望将lname结果基于html页面上的表单提供的搜索条件。
此网站上的几个旧帖子指向在字符串中设置条件。我不确定它是如何工作的。如果这是一个很好的方法,我想更多地了解这种方法发生了什么。
感谢您提供的所有帮助。
答案 0 :(得分:5)
我要感谢大家对此的帮助。 ArtisticPhoenix让我朝着正确的方向前进。
这篇文章标志着我一直在寻找的所有内容:
Adding a wildcard character to a string in PHP
这里&#34;稍微&#34;更新的代码:
$search = $_POST['search'].'%';
//echo($search);
$stmt = $link->prepare("SELECT lname, fname FROM planner WHERE lname LIKE ?");
$stmt->bind_param('s', $search);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
echo "<table><tr><th>Last Name</th><th>First Name</th></tr>";
while($row = $result->fetch_assoc()) {
echo "<tr><td>".$row["lname"]."</td><td>".$row["fname"]."</td></tr>";
}
echo "</table>";
} else {
echo "0 results";
}
答案 1 :(得分:1)
您可以在sql中执行类似关键字的工作,只需
- &GT;仅搜索lname
$(function() {
$('a[data-toggle="tab"]').on('click', function(e) {
window.localStorage.setItem('activeTab', $(e.target).attr('href'));
console.log("ok0");
window.localStorage.setItem('activeTab1', $(e.target).attr('data-ajax'));
console.log("ok1");
});
var activeTab = window.localStorage.getItem('activeTab');
console.log("ok2");
var activeTab1 = window.localStorage.getItem('activeTab1');
console.log("ok3");
if (activeTab) {
$('#myTab a[href="' + activeTab + '"], [data-ajax="' + activeTab1 + '"]').tab('show');
window.localStorage.removeItem("activeTab");
console.log("ok4");
}
});
- &GT;要搜索lname和fname,只需执行此操作 - &gt;
$search = $_POST['search'];
$stmt = $link->prepare("SELECT * FROM planner WHERE lname like ?");
$stmt->execute(array("%".$search."%"));