下面的脚本最初是为了随机选择一行,它可以做得很好,但是,我无法弄清楚如何修改它以使用名为“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"];
}
这很完美.
最佳答案 为了将来参考,因为您已经解决了问题,您需要在开始新连接之前关闭先前的连接,或者释放结果
$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"];
$result->close(); // close $result
$query2="SELECT * FROM `field_data_body` LIMIT $node, 1;";
$result2=$conn->query($query2);
while($row = $result->fetch_assoc()) {
echo $row["body_value"];
}
$result2->close(); // close $result2
我还注意到你没有关闭你发布的UPDATE上的连接,这将导致你以后再次遇到同样的问题.