在2个不同的数据库数据库中使用2个相等的字段PHP

时间:2018-07-27 08:39:19

标签: php mysql sql

我将尽力解释这一点。我正在创建翻译功能,它基于具有代码值的每个文本。例如:某个页面的标题具有代码和与该代码关联的值。

我有2个表:转换:保留所有代码和值,还有一个表,其中仅包含代码本身,并且通过一个将其转换为转换表的函数:

public function T($code) {
      $value = $code;
      $db_value = $this->db->getRow("SELECT value FROM translations WHERE code = '".$code."'");
      if($db_value) {
        $value = $db_value['value'];
      }
            return $value;
        }

GetRow是一个自定义函数,可从表中选择单个列:

function getRow() {
    $func_num_args = func_num_args();
    $func_get_args = func_get_args();
    if ($func_num_args == 0) {
        return null;
    } else if ($func_num_args == 1) {
        $this->query($func_get_args[0]);
    } else {
        $args = array();
        $query = $func_get_args[0];
        unset($func_get_args[0]);
        foreach ($func_get_args as $arg) {
            if (is_string($arg) && !is_numeric($arg)) {
                $args[] = mysqli_real_escape_string($this->conn, $arg);
            } else {
                $args[] = $arg;
            }
        }
        $this->query(vsprintf($query, $args));
    }
    return ($this->rows() ? $this->fetch() : null);
}

现在让我遇到问题的网站进入管理页面,我希望隐藏文本代码并显示该代码表示​​的文本。我当前的当选者看上去有点像:但这不起作用,它仅选择列,但找不到任何行:

  SELECT vc.*,
       t.code,
       t.value
  FROM vakances_card AS vc 
  JOIN translations AS t 
  ON vc.title = t.code 
  AND vc.descr = t.code

1 个答案:

答案 0 :(得分:0)

我不确定您要实现什么目标。您可以将查询更改为

  

选择vc。*,          t.code,          t值     从vakances_card AS vc     加入翻译AS t     开启vc.title = t.code     AND vc.descr = t.code

到以下查询

  

选择vc。*,          t.code,          t值     从vakances_card AS vc     左联接翻译AS t     开启vc.title = t.code     AND vc.descr = t.code

或者可以更改为

  

选择vc。*,          t.code,          t值     从vakances_card AS vc     RIGHT JOIN翻译成t     开启vc.title = t.code     AND vc.descr = t.code

希望您会得到所有想要的行。