- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试使用以下三个选项来过滤结果列表:
主类别、子类别和搜索
其中两个类别选项是下拉列表,搜索是文本框。
这是迄今为止我的代码:
files.php
if (!isset($_GET['filter'])){
$_GET['filter'] = "";
}
if (!isset($_GET['search'])){
$_GET['search'] = "";
}
if (!isset($_GET['subcategory'])){
$_GET['subcategory'] = "";
}
//过滤结果的形式:
<form method="get">
Category: <select name="filter">
<option <?php if(!isset($_GET['filter'])){echo 'selected';} ?> value="">-- Select Category --</option>
<option <?php if($_GET['filter'] == "1") {echo 'selected';} ?> value="1">View Vehicles Only</option>
<option <?php if($_GET['filter'] == "2") {echo 'selected';} ?> value="2">View Lighting Equiptment</option>
</select><br /><br />
<?php
if(isset($_GET['filter'])){
if($_GET['filter'] != ""){
echo 'SubCategory: <select name="subcategory">';
$sub_categories = getsubcategories($_GET['filter']);
foreach ($sub_categories as $cat){
echo '<option value = "'.$cat['cat_id'].'">'.$cat['cat_name'].'</option>';
}
echo '</select><br /><br />';
}
}
?>
Search Files: <input type="text" name="search" <?php if(isset($_GET['search'])){echo 'value="'.$_GET['search'].'"';}?> placeholder=" Enter a search term..." />
<br /><br /><center><input type="submit" class="btn btn-default" value="Update Results"/> <a href="files.php" class="btn btn-default">Reset Filters</a></center>
</form>
//调用函数来检索结果:
$files = getbycategory($_GET['filter'], $_GET['search'], $_GET['subcategory']);
//循环结果:
foreach($files as $file){
echo'<div class="col-lg-" id="file-'.$file['part_id'].'">
<div class="file-list-item first" id="">';
if ($file['image_url'] == "")
{
echo '<img class="file-image" height="120px" width="180px" src="'.baseurl.'/resources/img/no-image.png" />';
} else {
echo '<img class="file-image" height="120px" width="180px" src="'.$file['image_url'].'" />';
}
echo '
<div class="file-text">
<h3><strong>'.$file['part_name'].'</strong></h3>
Submitted by: '.$file['submitter'].'<br/>
Author: '.$file['author'].'<br />
Category: '.ucfirst($file['subcategory']).'<br />
Description: '.substr($file['description'],0,45).'...
</div>
<div class="download">
<a target="_blank" href="'.$file['download_url'].'" class="btn-success btn btn-default">Download</a>
<a href="'.baseurl.'/broken.php?id='.$file['part_id'].'" class="btn btn-default">Report as Broken</a><br /><br />';
if($file['is_broken']){
echo '<span class="broken"><i data-toggle="tooltip" data-placement="left" id="broken" title="This file has been reported as broken by \'Alcon H\' and is awaiting review." class="fa fa-warning fa-2x"></i></span>';
}
echo '
</div>
</div>
</div>';
};
file_functions.php
//这是检索结果的函数:
function getbycategory($category, $search, $subcategory){
global $db;
$sm = $db->prepare("SELECT * FROM parts WHERE main_category = :category AND active = 1 AND subcategory = :subcategory AND part_name LIKE :search");
if ($category == ""){
$category = '%';
$sm->bindParam(":category", $category, PDO::PARAM_STR);
} else {
$sm->bindParam(":category", $category, PDO::PARAM_STR);
}
if ($subcategory ==""){
$subcategory = '%';
$sm->bindParam(":subcategory", $subcategory, PDO::PARAM_STR);
} else {
$sm->bindParam(":subcategory", $subcategory, PDO::PARAM_STR);
}
if ($search == ""){
$search = '%'.$search.'%';
} else {
$sm->bindParam(":search", $search, PDO::PARAM_STR);
}
$sm->execute();
return $sm->fetchAll();
}
我收到的错误是:
PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' in /var/www/html/partsdb/resources/file_functions.php:74\nStack trace:\n#0 /var/www/html/partsdb/resources/file_functions.php(74): PDOStatement->execute()\n#1 /var/www/html/partsdb/files.php(18): getbycategory('', '', '')\n#2 {main}\n thrown in /var/www/html/partsdb/resources/file_functions.php on line 74, referer: http://localhost/partsdb/files.php
file_functions.php 的第 74 行正是它的执行位置。
谁能看出我哪里出错了?
最佳答案
如果这只发生在您的搜索字符串为空时,那是因为:
if ($search == ""){
$search = '%'.$search.'%';
} else {
$sm->bindParam(":search", $search, PDO::PARAM_STR);
}
仅当$search
变量不是空字符串时才绑定(bind)参数。要解决此问题,您可以将其修改为:
if ($search == ""){
$search = '%'.$search.'%';
}
$sm->bindParam(":search", $search, PDO::PARAM_STR);
以便它始终将准备好的语句与搜索字段绑定(bind)。虽然如果空 $search 将被字符串 %%
替换,因此仅返回等于字符串 %%
的值,这看起来有点奇怪,因为我相信你更喜欢 >LIKE
语句,尽管这是一个与此不同的问题。
关于php - 构建动态 PDO Mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26441003/
我有三张 table 。表 A 有选项名称(即颜色、尺寸)。表 B 有选项值名称(即蓝色、红色、黑色等)。表C通过将选项名称id和选项名称值id放在一起来建立关系。 我的查询需要显示值和选项的名称,而
在mysql中,如何计算一行中的非空单元格?我只想计算某些列之间的单元格,比如第 3-10 列之间的单元格。不是所有的列...同样,仅在该行中。 最佳答案 如果你想这样做,只能在 sql 中使用名称而
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
我正在为版本7.6进行Elasticsearch查询 我的查询是这样的: { "query": { "bool": { "should": [ {
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
是否可以编写一个查询来检查任一子查询(而不是一个子查询)是否正确? SELECT * FROM employees e WHERE NOT EXISTS (
我找到了很多关于我的问题的答案,但问题没有解决 我有表格,有数据,例如: Data 1 Data 2 Data 3
以下查询返回错误: 查询: SELECT Id, FirstName, LastName, OwnerId, PersonEmail FROM Account WHERE lower(PersonEm
以下查询返回错误: 查询: SELECT Id, FirstName, LastName, OwnerId, PersonEmail FROM Account WHERE lower(PersonEm
我从 EditText 中获取了 String 值。以及提交查询的按钮。 String sql=editQuery.getText().toString();// SELECT * FROM empl
我有一个或多或少有效的查询(关于结果),但处理大约需要 45 秒。这对于在 GUI 中呈现数据来说肯定太长了。 所以我的需求是找到一个更快/更高效的查询(几毫秒左右会很好)我的数据表大约有 3000
这是我第一次使用 Stack Overflow,所以我希望我以正确的方式提出这个问题。 我有 2 个 SQL 查询,我正在尝试比较和识别缺失值,尽管我无法将 NULL 字段添加到第二个查询中以识别缺失
什么是动态 SQL 查询?何时需要使用动态 SQL 查询?我使用的是 SQL Server 2005。 最佳答案 这里有几篇文章: Introduction to Dynamic SQL Dynami
include "mysql.php"; $query= "SELECT ID,name,displayname,established,summary,searchlink,im
我有一个查询要“转换”为 mysql。这是查询: select top 5 * from (select id, firstName, lastName, sum(fileSize) as To
通过我的研究,我发现至少从 EF 4.1 开始,EF 查询上的 .ToString() 方法将返回要运行的 SQL。事实上,这对我来说非常有用,使用 Entity Framework 5 和 6。 但
我在构造查询来执行以下操作时遇到问题: 按activity_type_id过滤联系人,仅显示最近事件具有所需activity_type_id或为NULL(无事件)的联系人 表格结构如下: 一个联系人可
如何让我输入数据库的信息在输入数据 5 分钟后自行更新? 假设我有一张 table : +--+--+-----+ |id|ip|count| +--+--+-----+ |
我正在尝试搜索正好是 4 位数字的 ID,我知道我需要使用 LENGTH() 字符串函数,但找不到如何使用它的示例。我正在尝试以下(和其他变体)但它们不起作用。 SELECT max(car_id)
我有一个在 mysql 上运行良好的 sql 查询(查询 + 连接): select sum(pa.price) from user u , purchase pu , pack pa where (
我是一名优秀的程序员,十分优秀!