首页 > 解决方案 > 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']."'";

任何帮助将不胜感激。谢谢!

标签: phpmysql

解决方案


您通过以下方式提交此表单GET

<form action='' method='get'>

你的线路虽然$search2 = "'".$_POST['cSelector']."'";正在使用$_POST

它应该是$_GET

$search2 = "'" . $_GET['cSelector'] . "'";` 

OP 更改后

这个

$search2='Compensation';

$search2 = "'".$_GET['cSelector']."'";

不一样。顶部只是一个字符串值。底部是一个用引号括起来的字符串值,所以它不是Compensationis 'Compensation'


推荐阅读