以下脚本最初旨在随机选择一行,它可以做得很好,但是,我无法弄清楚如何修改它以使用名为“nid”的列 ID 从第二个表中选择数据,这是相同的在两个表中:
$conn = mysqli_connect($host,$username,$password, $database) or die(mysql_error ());
$total_rows = 5;
$selected_row = mt_rand(0, $total_rows);
$query="SELECT * FROM `node` LIMIT $selected_row, 1;";
$result=$conn->query($query);
while($row = $result->fetch_assoc()) {
$node=$row["nid"];
echo $row["title"];
$query2="SELECT * FROM `field_data_body` LIMIT $node, 1;";
$result2=$conn->query($query2);
while($row = $result->fetch_assoc()) {
echo $row["body_value"];
}
诚然,上述内容并不是真正接近工作,但我很难找到一个我所追求的例子。
这些表位于 Drupal 站点的数据库中,因此 title 字段和 body_value 字段位于两个不同的表中;最终,我想为随机选择的节点回显一个匹配的标题和 body_value 集的结果。
具体来说说这个脚本,我想用nid来查找第二张表对应的行。
这可能吗?
起作用的位,从单个表中选择我想要的数据,格式如下:
$total_rows = 5;
$selected_row = mt_rand(0, $total_rows);
$query="SELECT * FROM `field_data_body` LIMIT $selected_row, 1;";
$result=$conn->query($query);
while($row = $result->fetch_assoc()) {
echo $row["body_value"];
}
?>
更新:
在评论者的建议下,我使用了一个连接,并最终得到:
$conn = mysqli_connect($host,$username,$password, $database) or die(mysql_error ());
$total_rows = 5;
$selected_row = mt_rand(0, $total_rows);
//Use the result in your limit.
$query="SELECT a.nid, a.title, b.entity_id, b.body_value
FROM node a, field_data_body b
WHERE a.nid = b.entity_id LIMIT $selected_row, 1;";
$result=$conn->query($query);
while($row = $result->fetch_assoc()) {
echo $row["title"];
echo " | ";
echo $row["body_value"];
}
效果很好。