繁体   English   中英

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

[英]How to use php variables (arrays) in mysql select statements?

如何在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

我认为实现此目的的唯一方法是使变量包含那些为该特定论文竞标的人的投标人标书? 我似乎无法解决该怎么做?!?

非常感谢您的帮助

我不认为您将能够使用这样的数组。 您将必须使用IN子句

看看SQL IN运算符

因此,您将必须构造一个值列表,例如

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

正如旁观者所建议的那样,您似乎可以从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);

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

可以很简单地将数组中的值插入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;

否则,请进一步解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM