正确处理 HTML 查询的 PHP 代码

标签 php mysql forms

连续数周,我都在研究 MYSQL 和 PHP。我建立了一个包含大约 15 个数据列的音乐数据库。手动 - 我能够查询数据库并获得很好的结果:

SELECT * FROM $tableName WHERE category RLIKE ('option-choice') and
genre RLIKE ('option-choice') and Sub_genre RLIKE ('option-choice')
and lyrical_theme RLIKE ('option-choice') and lead RLIKE
('option-choice') and tempo RLIKE ('option-choice'); "

我可用的 HTML 表单有 NINE 下拉按钮,我也想执行这些按钮,每个按钮都包含几个选项。没有单选按钮、复选框或多项选择。每个按钮的名称是这样的:

<select id="category" name="category"><option value="" class="header">Category</option>

通过我的 HTML 表单和 _POST,我能够获得任何 1 字段选择结果,输出是正确的表格格式和正确的颜色等等。太棒了!

当我添加第 2、第 3 或第 4 种形式选择时,我仍然得到所有记录,但没有像上面那样(手动)得到过滤结果。访问者的选择不是按顺序排列的 1、2、3,而是可以是它们的任意组合,例如 2、5、7 或 6、7 或 9 等....

我需要正确的 PHP 处理语句来生成正确的 SELECT 语句,(POST ARRAY/IGNORE BLANK CHOICE OPTIONS) 才能看到我的努力成为现实。非常感谢任何帮助。几个星期后,我已经精疲力尽,无法自己阅读,也没有产生正确的结果——数以百计的试验和错误,但至少我已经尽了最大的努力……我需要帮助……!谢谢!!!!

最佳答案

根据您的评论,我发现了一些问题: 您在查询中使用 OR 而不是 AND,这是您的主要问题。 AND 将选择所有不符合指定选项的记录; OR 选择具有任一选项的任何记录,即使它没有其余选项。

$query1= "SELECT * FROM $tableName 
WHERE category= '$category' AND genre='$genre' AND sub_genre= '$sub_genre' 
LIMIT $start, $limit";

如果我理解正确的话,第二件事是您想根据选择的选项动态构建语句?

检查每个下拉列表的值,如果有值,则添加到WHERE子句中

$query1 = "SELECT * FROM $tableName WHERE [some condition thats always required]";
if (!empty ($category))
    $query1 .= "AND category = '$category' ";
if (!empty ($genre))
    $query1 .= "AND genre= '$genre' ";
[etc...]
$query1 .= "LIMIT $start, $limit;"

如果您在 WHERE 子句中的唯一条件是传递的选项,那么您需要首先检查是否传递了任何选项以确定是否需要添加“WHERE”关键字进入您的查询;然后检查哪个是要包含的第一个选项,这样当没有先前的条件可以添加它时,您就不会包含“AND”关键字。或者您可以作弊并设置一个始终为真的任意条件,例如 "WHERE $table_id > 0 "(假设你的表中有一个 id 字段)

您还应该为选项使用数字 id 而不是在数据库上进行文本比较,这样效率更低,但这完全是另一回事...

关于正确处理 HTML 查询的 PHP 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9351343/

相关文章:

php - Codeigniter CSRF - 它是如何工作的

php - java.lang.String 类型的值无法转换为 JSONArray

jquery - 如何防止自定义 Mailchimp 表单在提交时重定向?

php - 在mysql中整数8.5存储为8.0

php mysqli 真正的转义字符串添加反斜杠

javascript - 使用 PHP 和 JSON 平面文件的最佳实践/方法

java - 响应未按照我们的要求正确进行

mysql - 将数据从 Excel 文件插入 SQL Server

html - HTML 表单标签中的 target 属性有什么用?

forms - 查找嵌入在窗体中的窗体的屏幕位置,嵌入在窗体中,