【问题标题】:PHP MySQL Query Multiple Values then Compare to HTML Input then echo based on each resultPHP MySQL 查询多个值,然后与 HTML 输入进行比较,然后根据每个结果回显
【发布时间】:2017-09-25 21:46:48
【问题描述】:

因此,在 HTML 表单上,在提交时,我希望它检查是否存在几个不同的值,并根据不同的值回显不同的值。

例如(从不同页面接收输入的 SQL):

public function getOrderByRMA($rma_num, $regpro_sn) {

    $sql = "SELECT * FROM " . DB_PREFIX . "reg_product ";
    $sql .= " WHERE rma_num = '". $rma_num ."' AND ";
    $sql .= "regpro_sn = '". $regpro_sn ."' ";

    $query = $this->db->query($sql);

    if ($query->row['rma_num_status']=0){
        $validity = 0;
    } elseif ($query->row['rma_num_status']=2) {
        $validity = 1;
    } elseif ($query->row['rma_num_status']=3) {
        $validity = 2;
    }
    else {
        return $query->row;
    }
}

从表“reg_product”中有“rma_num”、“regpro_sn”和“rma_num_status”

我希望它检查用户输入的“rma_num”,以确保它与数据库中的内容匹配,其中“regpro_sn”与 HTML 表单上的“regpro_sn”匹配(“regpro_sn”将特定于仅限个人用户)

但同时,检查“rma_num_status”的值是什么,可能是“0”、“1”、“2”或“3”

解释来自 SQL 的数据的 PHP 页面:

protected function validateForm() {
    $rma_num_check = $this->model_account_order->getOrderByRMA($this->request->post['ticket'],$this->request->post['regpro_sn']);
    if ( empty($rma_num_check) ) {
        $this->error['error_rma'] = $this->language->get('error_rma_none');
    } elseif ($validity == 1){
        $this->error['error_rma'] = $this->language->get('error_rma');
    } elseif ($validity == 2){
        $this->error['error_rma'] = $this->language->get('error_rma_invalid');
    }
   }

我不知道如何在 SELECT '*' 中定义一个变量来检查它是否 = 特定的东西。

感谢您的帮助

【问题讨论】:

  • 第二块应该是php还是sql语句? (有点难以理解你想做什么)
  • 您对 “如何在 SELECT 中定义变量”有什么看法
  • 你应该检查 PHP 端的状态,而不是 SQL .. 不要让你的生活过于复杂。

标签: php mysql


【解决方案1】:

我相信您正在尝试对 select 语句进行条件化,您可以使用 CASE 语法来做到这一点

$sql = "
    SELECT 
        CASE 
            WHEN rma_num_status = 1 THEN ''
            WHEN rma_num_status = 2 THEN 'Already in use'
            WHEN rma_num_status = 3 THEN 'No longer Valid'
            ELSE 'RMA Number was not found'
        END CASE as 'status'
    FROM " . DB_PREFIX . "reg_product 
    WHERE rma_num = '". $rma_num ."'
    AND regpro_sn = '". $regpro_sn ."'
";

如果您尝试做其他事情,请发布您的数据库表创建语句和您希望输出的示例。

【讨论】:

  • 更新了我的代码。您的帖子与我正在寻找的内容接近。
  • 看来你需要返回 $query->row['rma_num_status']
  • 我知道你要去哪里,但现在我得到“通知:未定义的索引:/home/tplinkus/public_html/test/catalog/model/account/order.php 中的 rma_num_status 在第 252 行”
  • 你能打印_r($query->row);
  • 所以它返回一个空行。您是否尝试过输出 $sql 并直接针对您的数据库运行它?
猜你喜欢
  • 2021-09-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-28
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多