Php 基于If-else语句插入MYSQL

Php 基于If-else语句插入MYSQL,php,mysql,Php,Mysql,大家好,我有一个简单的MYSQL语句,似乎无法正确地插入到数据库中 if($item_cat == "Hardware") { $item_filter = "2"; $item_filter = trim($_POST['item_filter']); $item_filter = strip_tags($item_filter); $item_filter = htmlspecialchars($item_filter); } elseif($item_ca

大家好,我有一个简单的MYSQL语句,似乎无法正确地插入到数据库中

if($item_cat == "Hardware") {
    $item_filter = "2";
    $item_filter = trim($_POST['item_filter']);
    $item_filter = strip_tags($item_filter);
    $item_filter = htmlspecialchars($item_filter);
 } elseif($item_cat == "Software") {
    $item_filter = "3";
    $item_filter = trim($_POST['item_filter']);
    $item_filter = strip_tags($item_filter);
    $item_filter = htmlspecialchars($item_filter);
 }

 $query = "INSERT INTO items(item_cat , item_filter) VALUES('$item_cat','$item_filter')";
我想要实现的概念是基于用户对选择输入(硬件或软件)的选择,项目过滤器是基于此选择添加的。当我尝试运行此代码时,它告诉我
item\u过滤器未定义。


如果有任何帮助或其他解决方法,我们将不胜感激。

为什么要编写这么多代码来过滤变量。请使用函数,并在需要时调用它

首先说$item_filter=2或3,然后像这样分配变量
$item\u filter=trim($\u POST['item\u filter'])
可能是您没有名为input的项过滤器

function filter($data){
  $data =   trim($data);
  $data = strip_tags($data);
  $data = htmlspecialchars($data);
  return $data;
}

$item_cat=filter($_POST['item_cat']);

if($item_cat == "Hardware")
 {
  $item_filter = "2";
 }
 else if($item_cat == "Software")
 {
  $item_filter = "3";
 }

$query = "INSERT INTO items(item_cat , item_filter) VALUES('$item_cat','$item_filter')";

$\u POST['item\u filter']
未定义,或者您的类别不是“硬件”或“软件”。在您的代码示例之前尝试
var\u dump($item\u cat)
,并确保您实际传递了
if
语句中的一条。

使用下面的代码

$sql = "INSERT INTO items(item_cat , item_filter) 
VALUES
(
(CASE item_filter WHEN 'Hardware' THEN 2 ELSE 3 END)
);
请试试这个

$item_filter = "";
if(strtolower($item_cat) == "hardware")
 {
  $item_filter = "2";
  $item_filter = trim($_POST['item_filter']);
  $item_filter = strip_tags($item_filter);
  $item_filter = htmlspecialchars($item_filter);
 }
 elseif(strtolower($item_cat) == "software")
 {
  $item_filter = "3";
  $item_filter = trim($_POST['item_filter']);
  $item_filter = strip_tags($item_filter);
  $item_filter = htmlspecialchars($item_filter);

 }

如果需要的话,我还可以添加HTML代码$\u POST['item\u filter']是未定义的,很抱歉,这有点让人困惑。什么让人困惑?我有两个变量,一个在表单元素(称为item_cat的页面主体)内,另一个在select语句之前。当用户从item_cat中选择一个选项时,它将从if else语句中读取该选项并将其放入数据库。这就是为什么使用$item_filter=“3”;或$item_filter=“2”;我觉得它们没有任何用处。谢谢你,先生。。但是你能解释为什么下面的代码是错误的吗?这也有助于解释为什么用==来比较字符串而不是strcmp。