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]; ?>
等...
答案 0 :(得分:2)
这样的事情:(未经测试)
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()返回结果,然后使用switch / case通过数组迭代,以确定要使用的标签。只需添加案例2到8,这应该可以解决问题。
编辑: 另一种方法是使用变量来存储HTML并在过程完成后回显它。
答案 1 :(得分:0)
这个令人讨厌的代码应该可以解决问题,它使用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&amp; A长度:How can an SQL query return data from multiple tables
编辑:我看到其他两位回答的人告诉你重新设计你的桌子 - 我有点做,但有点不同意。
这张表格粗略地标准化,这意味着您可以添加一百个额外的表单字段,而不必触及表格本身 - 这是一个(令人惊讶的)好事。我想说这个设计让你更难以获得这些特定的数据,但它非常强大 - 如果不是非常快速或容易访问。
答案 2 :(得分:0)
问题是数据库设计,而不是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知识有限,但我认为这样可行。如果没有,我知道它并不复杂)
更简单,更少的代码......最重要的是imho,更有效率。
我建议您阅读Database Normalization,以便更好地了解数据库的设计方式。但这并不需要它,只需要知道和理解的东西。