php - PHP MySQL 使用 QueryString 调整查询
问题描述
为新手问题道歉。
我的网站有一个表格。
<form action='' method='get'>
<select id="cSelector" name="cSelector">
<option value=""></option>
<option value="">Show All Items</option>
<option value="Compensation">Compensation</option>
</select>
<input type="submit" value="Submit">
</form>
我的查询字符串是在提交表单时创建的,如下所示:
http://website.com/table_example.php?cSelector=Compensation
我的查询如下所示:
$stmt = $conn->prepare("
SELECT t1.CategoryID,t1.SubCategoryName, t1.CategoryName, t1.SubCategoryID, t2.ItemText from
(SELECT Category.CategoryID,CategoryName, SubCategoryName, SubCategoryID
FROM Category
JOIN SubCategory
ON Category.CategoryID = SubCategory.CategoryID) t1
RIGHT JOIN
(SELECT SubCategoryID, ItemText FROM Item) t2
ON (t1.SubCategoryID = t2.SubCategoryID)
WHERE 1 ".$searchQuery." AND CategoryName = ".$search2." ORDER BY ".$columnName." ".$columnSortOrder." LIMIT :limit,:offset");
预期的结果会生成一个由 CategoryName 查询的表。
我的问题。为什么这会正确执行?
$search2='Compensation';
这不是吗?
$search2 = "'".$_GET['cSelector']."'";
任何帮助将不胜感激。谢谢!
解决方案
您通过以下方式提交此表单GET
<form action='' method='get'>
你的线路虽然$search2 = "'".$_POST['cSelector']."'";
正在使用$_POST
它应该是$_GET
:
$search2 = "'" . $_GET['cSelector'] . "'";`
OP 更改后
这个
$search2='Compensation';
和
$search2 = "'".$_GET['cSelector']."'";
不一样。顶部只是一个字符串值。底部是一个用引号括起来的字符串值,所以它不是Compensation
is 'Compensation'
。
推荐阅读
- java - iBatis 语句外部化
- redis - redis哨兵故障转移后返回老主人
- c# - DispatchTimer 未在服务中触发
- draftjs - 如何在 Draft.js 中使用修饰符装饰文本
- xtext - 扩展 Xbase 类型系统
- java - 在 LWJGL 中提高渲染性能的最佳方法
- r - 从字符串转换为逻辑时如何明确警告会产生 NA
- javascript - Codeigniter + Biostall 的 Google Maps API v3:不同标记中的不同信息窗口
- python - Python:杀死子进程不起作用(错误的PID)
- android - 'com.android.support:appcompat-v7:27.1.1' 与 com.google.android.gms:play-services-maps:15.0.1 冲突?