【问题标题】:How to use php variables (arrays) in mysql select statements?如何在 mysql select 语句中使用 php 变量(数组)?
【发布时间】:2010-04-25 12:57:05
【问题描述】:

如何在 mysql select 语句中使用 php 变量(数组)?

我正在设计一个拍卖网站,目前正在开发一个页面,该页面可让人们查看一个项目的所有当前出价列表。我想显示 3 列:

  1. amountbid - 每个投标人对该项目的投标金额(保存在 tblbid 中)

  2. bidderid - 每个出价者的 ID(在 tbluser 中找到)

  3. total_positivity_feedback - 有多少用户为投标人留下了正面反馈(根据 tblfeedback 计算)

要查找“金额”和“投标人”列,我从上一页传递了essayid URL 参数。这工作正常。

尽管如此,我无法为每个出价的不同用户显示 total_positivity_feedback 列。

我的 mysql 查询如下所示:

select
tblbid.bidderid, 
tblbid.amount,
(select count(tblfeedback.feedbackid) from tblfeedback WHERE tblfeedback.writerid = "ARRAY VARIABLE GOES HERE") AS total_positivity_feedback FROM tblbid WHERE tblbid.essayid = $essayid_bids

我认为实现此目的的唯一方法是使变量包含那些为该特定论文出价的人的出价者?我似乎无法弄清楚如何做到这一点?!?

非常感谢您的帮助

【问题讨论】:

    标签: php sql select arrays variables


    【解决方案1】:

    我认为您无法使用这样的数组。您将不得不使用 IN 子句

    看看SQL IN Operator

    所以你必须构建一个你的价值观列表,比如说

    SELECT *
    FROM yourTable
    WHERE yourID IN (1,2,3,4,5,6)
    

    【讨论】:

      【解决方案2】:

      正如 astander 所建议的,您似乎可以从 MySQL 的 IN 子句中受益。 生成 (1,2,3,4,5,6) 字符串的快速方法是使用 php 函数 implode()

      例如:

      $array = array(1,2,3,4,5);
      $in = '(' . implode(',', $array) . ')';
      echo $in;
      

      产量:

      (1,2,3,4,5)
      

      所以..

      $array = array(1,2,3,4,5);
      $in = '(' . implode(',', $array) . ')'; 
      $query = sprintf('select tblbid.bidderid, tblbid.amount, (select count(tblfeedback.feedbackid) from tblfeedback WHERE tblfeedback.writerid IN %s AS total_positivity_feedback FROM tblbid WHERE tblbid.essayid = %s', $in, $essayid_bids);
      

      【讨论】:

        【解决方案3】:

        从您的问题来看,Writer ID 应该来自哪里并不明显。当您说“数组”时,您是指 PHP 数组还是指存储在数据库中的行中的多个值?您的描述暗示了前者,因为您在数据库结构中没有提及 Writers,但我怀疑您的意思是后者。

        数组中的值可以很简单地插入到 PHP 字符串中:

        $arr = array("String");
        echo "{$arr[0]}";
        

        正如我之前提到的,我怀疑这不会解决您的问题。能否请您澄清一下标书与作者之间的关系?如果您想获得每个投标人的反馈,那么您会想要:

        SELECT
            tblbid.bidderid, 
            tblbid.amount,
            (SELECT COUNT(tblfeedback.feedbackid) from tblfeedback WHERE tblfeedback.writerid = tblbid.bidderid) AS total_positivity_feedback
        FROM tblbid WHERE tblbid.essayid = $essayid_bids;
        

        否则请进一步说明。

        【讨论】:

          猜你喜欢
          • 2014-08-12
          • 2015-01-27
          • 1970-01-01
          • 1970-01-01
          • 2013-09-28
          • 2017-08-22
          • 1970-01-01
          • 1970-01-01
          • 2011-03-29
          相关资源
          最近更新 更多