簡體   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