我如何比较一个或两个查询的结果?
How i can compare the result in one query or two?
我正在尝试从 smf 数据库中获取最后 10 个主题,但主题位于两个单独的表中。
Subject, Post Time and Message ID in smf_messages.
Topic ID and Topic First Message in smf_topics.
我写了这段代码来获取主题,但我不知道如何比较这两个结果。
$result = mysql_query("select subject,id_msg,id_topic from smf_messages");
$result2= mysql_query("select id_first_msg from smf_topics");
if(mysql_num_rows($result)!=0)
{
while($read = mysql_fetch_object($result))
{
if ($read->id_msg==$read->id_topic) {
echo "<a href='../index.php?topic=" . $read->id_topic . "'>".$read->subject."</a><br>";
}
}
您可能需要以下查询
select subject, id_msg, id_topic, id_first_msg
from smf_messages
left join smf_topics on smf_message.id_msg = smf_topics.id_first_msg
加入sql绑定记录:
select subject id_msg, id_topic, id_first_msg from smf_messages
join smf_topics on smf_messages.id_msg = smf_topics.id_topic
mysql 有很多选择,通过 google 小搜索您可以找到 left join
。
tuttorial and examples.
您要做的第一件事是停止使用 mysql_* 并开始使用 mysqli_* 或 pdo 了解 sql injections
您的查询应如下所示。
select smf_messages.subject,smf_messages.id_msg,smf_messages.id_topic from smf_messages left join smf_topics on smf_topics.id_first_msg=smf_messages.id_msg
如果你想在不使用 SQL 的情况下做到这一点,这是我的解决方案,它不是很好,但你可以了解它是如何工作的:
$messages = array();
$topics = array();
while($readmessage = mysql_fetch_object($resultmessage)) {
array_push($messages, $readmessage);
}
while($readtopic = mysql_fetch_object($resulttopic)) {
array_push($topics, $readtopic);
}
foreach ($topics as $topic) {
$result = array_search($topic->id_first_message);
if($result != true){
//HERE $result IS THE INDEX OF FIRST MESSAGE IF IT IS IN THE MESSAGES ARRAY
$messages[$result].id_msg //Access message attributes
}
}
我正在尝试从 smf 数据库中获取最后 10 个主题,但主题位于两个单独的表中。
Subject, Post Time and Message ID in smf_messages.
Topic ID and Topic First Message in smf_topics.
我写了这段代码来获取主题,但我不知道如何比较这两个结果。
$result = mysql_query("select subject,id_msg,id_topic from smf_messages");
$result2= mysql_query("select id_first_msg from smf_topics");
if(mysql_num_rows($result)!=0)
{
while($read = mysql_fetch_object($result))
{
if ($read->id_msg==$read->id_topic) {
echo "<a href='../index.php?topic=" . $read->id_topic . "'>".$read->subject."</a><br>";
}
}
您可能需要以下查询
select subject, id_msg, id_topic, id_first_msg
from smf_messages
left join smf_topics on smf_message.id_msg = smf_topics.id_first_msg
加入sql绑定记录:
select subject id_msg, id_topic, id_first_msg from smf_messages
join smf_topics on smf_messages.id_msg = smf_topics.id_topic
mysql 有很多选择,通过 google 小搜索您可以找到 left join
。
tuttorial and examples.
您要做的第一件事是停止使用 mysql_* 并开始使用 mysqli_* 或 pdo 了解 sql injections
您的查询应如下所示。
select smf_messages.subject,smf_messages.id_msg,smf_messages.id_topic from smf_messages left join smf_topics on smf_topics.id_first_msg=smf_messages.id_msg
如果你想在不使用 SQL 的情况下做到这一点,这是我的解决方案,它不是很好,但你可以了解它是如何工作的:
$messages = array();
$topics = array();
while($readmessage = mysql_fetch_object($resultmessage)) {
array_push($messages, $readmessage);
}
while($readtopic = mysql_fetch_object($resulttopic)) {
array_push($topics, $readtopic);
}
foreach ($topics as $topic) {
$result = array_search($topic->id_first_message);
if($result != true){
//HERE $result IS THE INDEX OF FIRST MESSAGE IF IT IS IN THE MESSAGES ARRAY
$messages[$result].id_msg //Access message attributes
}
}