[英]Mysql select statement with inner join not working with php but works on mysql terminal
[英]Inner join select statement
SQL語句
$CustInfo = Select * from wp_wpsc_submited_form_data where log_id = '6';
結果如下:
ID CUST_ID FORM_ID VALUE
81 6 2 John
82 6 3 Smith
83 6 4 123 Main Street
84 6 5 Houston
96 6 6 NULL
85 6 7 US
86 6 8 77459
我已經花了幾個小時來研究Stack Overflow上的所有示例,但是看不到任何可以理解的足夠接近的地方。 我希望有人能簡單明了地解釋一下,並可能提供一個示例,說明如何生成帶有值的HTML表。
例:
Firstname : <%php echo $CustInfo[2]; ?>
Lastname : <%php echo $CustInfo[3]; ?>
Address : <%php echo $CustInfo[4]; ?>
等等...
這樣的事情怎么樣:(未經測試)
if(is_array($CustInfo) && count($CustInfo) > 0)
{
echo "<table>";
for($i=0;$i<count($CustInfo);$i++)
{
echo "<tr>";
switch($i)
{
case 1: echo "<td>FirstName:</td><td>".$CustInfo[i]."</td>";
...
}
echo "</tr>";
}
echo "</table>";
}
我檢查查詢是否返回了帶有is_array和count()的結果,然后使用開關/大小寫來遍歷數組以確定要使用的標簽。 只需將情況2添加到8,就可以解決問題。
編輯:一種替代方法是使用一個變量來存儲HTML,並在過程完成后回顯它。
這個討厭的代碼應該可以解決這個問題,它使用group_concat將非空行分組為單個字段nd,因為並集意味着每一行只有一列為空,它應該可以工作:
select
group_concat(Firstname) as FirstName,
group_concat(Surname) as Surname,
group_concat(Add1) as Add1,
group_concat(Add2) as Add2,
group_concat(Add3) as Add3,
group_concat(Country) as Country,
group_concat(ZipCode) as ZipCode
from
(
select
value as FirstName,
null as Surname,
null as Add1,
null as Add2,
null as Add3,
null as Country,
null as ZipCode
from
wp_wpsc_submited_form_data
where
log_id = '6' // I can't actually see this field in your columns??
and form_id=2
union
select
null as FirstName,
Value as Surname,
null as Add1,
null as Add2,
null as Add3,
null as Country,
null as ZipCode
from
wp_wpsc_submited_form_data
where
log_id = '6'
and form_id=3
union
...
...
...
union
select
null as FirstName,
null as Surname,
null as Add1,
null as Add2,
null as Add3,
null as Country,
Value as ZipCode
from
wp_wpsc_submited_form_data
where
log_id = '6'
and form_id=8
)
然后,您應該能夠很好地遍歷各行並執行以下操作:
Firstname : <%php echo $CustInfo['FirstName']; ?>
等等。
我還寫了一個長度Q&A,您可能對此感興趣: SQL查詢如何從多個表返回數據
編輯:我看到回答的其他兩個人告訴您重新設計桌子-我有點這樣做,但有點不同意。
該表經過嚴格的規范化處理 ,這意味着您可以添加一百個額外的表單字段,而不必觸摸表本身-這是一件(令人驚奇的)好事。 我要說的是,這種設計使您很難獲得這些特殊的數據,但是它非常健壯-如果不是那么快或容易訪問的話。
問題是數據庫設計,而不是PHP或SQL。
您的表應如下所示:
| CUST_ID (PK) | FIRSTNAME | LASTNAME | STREETADDRESS | CITY | STATE | ZIPCODE |
------------------------------------------------------------------------------------
| 6 | John | Smith | 123 Main Street | Houston | NULL | 77459 |
| 7 | Jane | Doe | 456 Fake St. | Richmond| VA | 23860 |
從這里,您可以使用SQL語句簡單地調用它們:
SELECT *
FROM UserTable
WHERE CUST_ID = 6
這將為您返回一個簡單的答案,您可以像這樣使用它:
FirstName: <%php echo $CustInfo['FIRSTNAME']; ?>
(免責聲明:我對PHP的知識有限,但是我認為這可以工作。如果沒有,我知道它並沒有那么復雜)
更簡單,更少代碼...而且最重要的是恕我直言,更有效。
我確實建議您閱讀有關數據庫規范化的內容,以更好地了解應如何設計數據庫。 但這並不需要,只是一些很好的了解和理解。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.