我需要用来自两个不同表的数据填充datatables。简单,我想,只要加入或子查询。不幸的是,第二个表不是基于ID的,所以我无法对该表进行筛选。即使我可以,我也不知道如何把它放到数据表中。
我已经找了好几天了,还是没找到。。
表wp_mollie_表格登记有:
#id # description #
#----#-------------#
#100 # Race #
#101 # Pull #
####################
表wp_mollie_表单_注册_字段有:
#id # field # value
#----#------#-------#
#100 # Naam # Theun #
#100 # E-mail # test@test.com #
#100 # Leeftijd # 28 #
#100 # Soort voertuig # Auto #
#100 # Betaalmethode # ideal #
#101 # Naam # Theun #
#101 # E-mail# quest@write.nl #
#101 # Woonplaats # Groningen #
#101 # Merk en type # New Holland #
#101 # Gewichtsklasse # 2.8T #
#101 # Betaalmethode # ideal #
#####################
这是代码:
$query = "select * from A";
$items_result = mysqli_query($conn,$query) or die;
if ($items_result->num_rows > 0) {
echo "<table id='table_id' class='display'><thead><tr><th>ID</th>
<th>description</th><th>Name</th><th>Age</th><th>Email</th></tr></thead>
</tbody>";
while ($row = mysqli_fetch_assoc($items_result)){
echo "<tr><td>".$row["id"]."</td><td>".$row["description"]."</td>
<td>".$Name."</td><td>".$row["Age"]."</td><td>".$row["Email"]."</td>
</tr>";
}
我将如何执行以下操作:从表A中选择*并使用id选择姓名、年龄和电子邮件,将此信息放入我的数据表并转到下一行?
编辑:它的作品,但不显示Naam(姓名)电子邮件和年龄(leeftijd)我现在有:
$query = "SELECT wp_mollie_forms_registrations.id, wp_mollie_forms_registrations.description, tn.value AS 'Naam', te.value AS 'E-mail', ta.value AS 'Leeftijd' ".
"FROM wp_mollie_forms_registrations".
" INNER JOIN (SELECT registration_id, value FROM wp_mollie_forms_registration_fields WHERE field = 'Naam') tn ON wp_mollie_forms_registrations.id = tn.registration_id".
" INNER JOIN (SELECT registration_id, value FROM wp_mollie_forms_registration_fields WHERE field = 'E-mail') te ON wp_mollie_forms_registrations.id = te.registration_id".
" INNER JOIN (SELECT registration_id, value FROM wp_mollie_forms_registration_fields WHERE field = 'Leeftijd') ta ON wp_mollie_forms_registrations.id = ta.registration_id";
if(!mysqli_query($conn, $query)){ echo "Error: ".mysqli_error($conn); }
$items_result = mysqli_query($conn,$query) or die;
if ($items_result->num_rows > 0) {
echo "<table id='table_id' class='display'><thead><tr><th>ID</th><th>description</th><th>Name</th><th>Age</th><th>Email</th></tr></thead></tbody>";
while ($row = mysqli_fetch_assoc($items_result)){
echo "<tr><td>".$row["id"]."</td><td>".$row["description"]."</td><td>".$row["tn.value"]."</td><td>".$row["ta.value"]."</td><td>".$row["te.value"]."</td>
</tr>";
}
echo "</tbody></table>";
} else {
echo "0 results";
}
以下是根据您的回答应该可以工作的代码:
$query = "SELECT wp_mollie_forms_registrations.id as 'ID', wp_mollie_forms_registrations.description as 'Description', tn.value AS 'Naam', te.value AS 'Email', ta.value AS 'Leeftijd' ".
"FROM wp_mollie_forms_registrations".
" INNER JOIN (SELECT registration_id, value FROM wp_mollie_forms_registration_fields WHERE field = 'Naam') tn ON wp_mollie_forms_registrations.id = tn.registration_id".
" INNER JOIN (SELECT registration_id, value FROM wp_mollie_forms_registration_fields WHERE field = 'E-mail') te ON wp_mollie_forms_registrations.id = te.registration_id".
" INNER JOIN (SELECT registration_id, value FROM wp_mollie_forms_registration_fields WHERE field = 'Leeftijd') ta ON wp_mollie_forms_registrations.id = ta.registration_id";
if(!mysqli_query($conn, $query)){ echo "Error: ".mysqli_error($conn); }
$items_result = mysqli_query($conn,$query) or die;
if ($items_result->num_rows > 0) {
echo "<table id='table_id' class='display'><thead><tr><th>ID</th><th>description</th><th>Name</th><th>Age</th><th>Email</th></tr></thead></tbody>";
while ($row = mysqli_fetch_assoc($items_result)){
echo "<tr><td>".$row["ID"]."</td><td>".$row["Description"]."</td><td>".$row["Naam"]."</td><td>".$row["Leeftijd"]."</td><td>".$row["Email"]."</td>
</tr>";
}
echo "</tbody></table>";
} else {
echo "0 results";
}
无法显示某些列的原因是PHP中的“echo”语句中的值错误。例如,tn.value作为Naam
将tn.value
定义为“Naam”。因此,更改PHP中的值以反映这一点应该可以让查询正常工作。
有关查询正在做什么的更详细描述,这里有一个超简化版本。假设你有表,A和B,每个都有一个字段'id'和'value'。看看这个查询:
SELECT A.value, B.value
FROM A
INNER JOIN B
ON A.id = B.id
这将从表A和B中选择值并返回它们,但前提是A中的ID和B中的ID之间存在匹配。您可以在此处阅读有关连接的更多信息。
子查询部分相对简单。它从表B中选择所有的registration_id和值,其中字段是特定类型,如Naam。