【问题标题】:My query does not output the column I want even when selected即使被选中,我的查询也不输出我想要的列
【发布时间】:2019-10-04 06:46:13
【问题描述】:

当我的 SELECT 已经获得我想要的列时,我不确定我是如何获得未定义索引错误的。

我有三张桌子:

clinics_branch.add.php

<?php
  session_start();
  require_once('clinics_branch_list.vc.php');
?>

<?php echo $lstBranch['usrmerchant']; ?>

未定义的索引在 echo usrmerchant 中

clinics_branch_list.vc.php

require_once($routePath . "_mc/Merchant.mc.php");
  $mcMerchant = new Merchant_MC();

$lstBranch = $mcMerchant->SelectMainBranch_ByMerchantBranch($db, $merchantid);

Merchant.mc.php

Class Merchant_MC {

  public function SelectMainBranch_ByMerchantBranch($db, $merchantid) {
  $stmt = $db->prepare(
    " SELECT  mb.merchantid, m.usrmerchant
      FROM `merchant_branch` mb
      LEFT JOIN `merchant` m ON mb.merchantid = m.merchantid
      WHERE mb.merchantid = $merchantid "
  );

  $stmt->bindValue(':merchantid', $merchantid, PDO::PARAM_INT);
  $stmt->execute();
  $row = $stmt->fetchAll(PDO::FETCH_ASSOC);

  return $row;
  }
}

这是我的选择的输出,你可以看到有内容,所以 SQL 正在运行

感谢任何帮助,完整的错误是:

Notice: Undefined index: usrmerchant in clinics_branch_add.php

更新:

将我的 SQL 行更改为 WHERE mb.merchantid = :merchantid 仍然显示相同的错误。

更新:

切换到 innjer join 也不起作用

选择 mb.merchantid, m.usrmerchant FROM Mercer_branch mb INNER JOIN商家m ON mb.merchantid = m.merchantid WHERE mb.merchantid = :merchantid

【问题讨论】:

  • 你准备好的语句不是很正确,你应该有WHERE mb.merchantid = :merchantid,所以merchantid是你bindValue()调用中的绑定参数。
  • 是否改变了,仍然存在相同的错误
  • 您是否尝试过使用 print_r($row); 之类的东西来查看数据中的内容(可能与将 mb.merchantid 作为 SQL 中的列有关)。
  • 你如何使用 $lstBranch?
  • 见下面尼克的回答。

标签: php sql select


【解决方案1】:

你正在做一个fetchAll,所以$lstBranch实际上是一个看起来像这样的行数组:

array(0 => array('merchantid' => 30, 'usrmerchant' => 'dermadent'))

您需要访问usrmerchant

$lstBranch[0]['usrmerchant'];

【讨论】:

  • 我明白了,我错过了阵列,感谢您的帮助
  • @ButtonPress 不用担心。我很高兴能帮上忙。
【解决方案2】:

改变

SELECT  mb.merchantid, m.usrmerchant
      FROM `merchant_branch` mb
      LEFT JOIN `merchant` m ON mb.merchantid = m.merchantid
      WHERE mb.merchantid = $merchantid "

SELECT mb.merchantid, m.usrmerchant 
   FROM merchant_branch mb 
INNER JOIN marchant m 
   ON mb.merchantid = m.merchantid 
WHERE mb.merchantid = :merchantid

【讨论】:

  • 我仍然得到未定义的索引,我不认为选择 sql 是问题,因为我已经有了想要工作的输出。
猜你喜欢
  • 1970-01-01
  • 2021-04-08
  • 2015-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-05
相关资源
最近更新 更多