cari
Rumahpembangunan bahagian belakangtutorial php如何交叉检验后显示内容

各位大神:我有两个表,A表里面的字段分别是id,content,B里面是id,content,userid,edittime,B表里面的数据是用户通过EDIT页面对A表里面内容的修改。我想实现以下功能:
如果用户没有登录,则按照ID顺序提取A表里面的内容显示;如果用户登录,则仍按A表中ID顺序显示,但如果该ID行里面的内容,该登录用户已经修改,并在B表里面有,则改行显示B表中最新修改的内容。我是这么写的,好像运行起来有点慢,有没有更有效率的方法?重新设计表也可以。总之,我的目的是如用户没有登陆则显示默认内容,如登陆了,则把相关内容替换显示为用户修改后的内容,显示内容的顺寻还是按照A表中ID的顺序。谢谢各位大神。
session_start () ; 
include("IncDB.php"); 
$result=mysql_query("SELECT * FROM contents",$link); 
$row=mysql_fetch_row($result); 
$abcb=array(); 
while($row) 

@$result1=mysql_query("SELECT * FROM usercontents where id='".$row[0]."' and userid='".$_SESSION['id']."' order by edittime desc limit 1",$link); 
@$row1=mysql_fetch_row($result1); 
if($row1==null) 

$abcb[]=$row;} 
else 

$abcb[]=$row1;} 
$row=mysql_fetch_row($result); 

foreach($abcb as $v) {
  echo "$v[0]$v[1] 
";
}

?>


回复讨论(解决方案)

有人能帮忙看看么?

我就想知道是大家没看懂我的需求,还是其他啊?

看着有点绕圈

在用户没登录的情况下显示A表中的数据(默认的数据),用户登陆了显示B表中用户对应修改的数据,是不是这样的

你对  contents 表的所有记录,都执行一次对 usercontents 表的查询
那当然慢啦

回xuzuning,我也这么觉得是这个原因,那该怎么弄呢?有好办法么?谢谢!

回u014202165,是这个意思。每一行的显示都是这个规则,没登陆或用户未修改的,就显示默认,但如果用户登录了,那么该行就显示用户修改的内容。

大概的理解是:
A表是主记录表
B表是修改日志

如果不改表结构,已登录用户的记录可以通过简单的查询完成
select * from contents a left join (select * from usercontents where userid=[用户session_id] order by edittime desc limit 1) b on a.id=b.id

取出来的数据中包含默认的和最新的,页面再进行相应的处理即可。

如果数据量非常大,建议建立一张最后修改结果表,记录用户最后的修改结果,每个用户只保留一条,然后简单的表关联就可以查出来了,不用到日志中去搜。

忘了提醒下,相关字段请记得建索引,不然数据量大了也是很慢的

B表也是这样,每个用户在每个ID项下,只保留一条数据。是不是用您的代码就可以了?我试试看。

如果取出来的数据是包含默认的和最新的,那也没有意义,我其实可以把A和B两张表合一个也可以,只不过A表中的userid显示为空就可以。但下面怎么办呢?我的意思是怎么实现把用户的内容替代显示默认的内容。

好吧,送佛送到西

select 	a.id, 	case when b.content is null then a.content else b.content end content from contents a left join 	(select * from usercontents where userid=【用户session_id】 order by edittime desc limit 1) b on a.id=b.id

满足 userid=$_SESSION['id'] 的只有一条!

To楼主:

对于B表,不论每个用户在每个ID下有多少条,这个查询都是适用的。
因为子查询是按用户ID进行查找的,并且按编辑时间倒排序并只取了最后一条。

谢谢

我好好学习一下

session_start () ; include("IncDB.php"); //$_SESSION['id'] 只有一个,即使能查到多条记录,由于你有 limit 1,所以至多也只会有一个结果$result1=mysql_query("SELECT * FROM usercontents where userid='".$_SESSION['id']."' order by edittime desc limit 1",$link); $row1=mysql_fetch_row($result1); //把登录用户的信息先查出来$result=mysql_query("SELECT * FROM contents",$link); $row=mysql_fetch_row($result); $abcb=array(); while($row) {   if($row1==null)   {     $abcb[]=$row;  }   else   {     $abcb[]=$row1;}     $row=mysql_fetch_row($result);   }   foreach($abcb as $v) {    echo "$v[0]$v[1] <br>";  }}

contents 是a表;usercontents是b表。我的代码是这么写的,好像不行啊。肯定是我错了,但该怎么改呢?谢谢谢谢!

 session_start () ;
 include("IncDB.php"); 
$result=mysql_query(select a.id, case when b.content is null then a.content else b.content end  from content a left join 
(select * from b where userid='".$_SESSION['id']."'  order by edittime desc limit 1) b on a.id=b.id,$link);
$row=mysql_fetch_row($result); 
while($row) 

$abcb[] = $row;
$row=mysql_fetch_row($result); 

foreach($abcb as $v) {
  echo "$v[0]$v[1] 
";
}
//mysql_close($link); 
?>

回xuzuning,好像不行。另外,语句是不是也少一个while($row1)?因为同一个用户有可能更改多条内容。

都 limit 1 了,多少条数据不也只查得一条?

只查一条出来不能解决问题,因为,有可能用户会修改多条记录。不知道咋办了。

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
PHP dan Python: Paradigma yang berbeza dijelaskanPHP dan Python: Paradigma yang berbeza dijelaskanApr 18, 2025 am 12:26 AM

PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

PHP dan Python: menyelam mendalam ke dalam sejarah merekaPHP dan Python: menyelam mendalam ke dalam sejarah merekaApr 18, 2025 am 12:25 AM

PHP berasal pada tahun 1994 dan dibangunkan oleh Rasmuslerdorf. Ia pada asalnya digunakan untuk mengesan pelawat laman web dan secara beransur-ansur berkembang menjadi bahasa skrip sisi pelayan dan digunakan secara meluas dalam pembangunan web. Python telah dibangunkan oleh Guidovan Rossum pada akhir 1980 -an dan pertama kali dikeluarkan pada tahun 1991. Ia menekankan kebolehbacaan dan kesederhanaan kod, dan sesuai untuk pengkomputeran saintifik, analisis data dan bidang lain.

Memilih antara php dan python: panduanMemilih antara php dan python: panduanApr 18, 2025 am 12:24 AM

PHP sesuai untuk pembangunan web dan prototaip pesat, dan Python sesuai untuk sains data dan pembelajaran mesin. 1.Php digunakan untuk pembangunan web dinamik, dengan sintaks mudah dan sesuai untuk pembangunan pesat. 2. Python mempunyai sintaks ringkas, sesuai untuk pelbagai bidang, dan mempunyai ekosistem perpustakaan yang kuat.

PHP dan Rangka Kerja: Memodenkan bahasaPHP dan Rangka Kerja: Memodenkan bahasaApr 18, 2025 am 12:14 AM

PHP tetap penting dalam proses pemodenan kerana ia menyokong sejumlah besar laman web dan aplikasi dan menyesuaikan diri dengan keperluan pembangunan melalui rangka kerja. 1.Php7 meningkatkan prestasi dan memperkenalkan ciri -ciri baru. 2. Rangka kerja moden seperti Laravel, Symfony dan CodeIgniter memudahkan pembangunan dan meningkatkan kualiti kod. 3. Pengoptimuman prestasi dan amalan terbaik terus meningkatkan kecekapan aplikasi.

Impak PHP: Pembangunan Web dan seterusnyaImpak PHP: Pembangunan Web dan seterusnyaApr 18, 2025 am 12:10 AM

Phphassignificantelympactedwebdevelopmentandextendsbeyondit.1) itpowersmajorplatformslikeworderpressandexcelsindatabaseIntions.2) php'SadaptabilityAldoStoScaleforlargeapplicationFrameworksLikelara.3)

Bagaimanakah jenis membayangkan jenis PHP, termasuk jenis skalar, jenis pulangan, jenis kesatuan, dan jenis yang boleh dibatalkan?Bagaimanakah jenis membayangkan jenis PHP, termasuk jenis skalar, jenis pulangan, jenis kesatuan, dan jenis yang boleh dibatalkan?Apr 17, 2025 am 12:25 AM

Jenis PHP meminta untuk meningkatkan kualiti kod dan kebolehbacaan. 1) Petua Jenis Skalar: Oleh kerana Php7.0, jenis data asas dibenarkan untuk ditentukan dalam parameter fungsi, seperti INT, Float, dan lain -lain. 2) Return Type Prompt: Pastikan konsistensi jenis nilai pulangan fungsi. 3) Jenis Kesatuan Prompt: Oleh kerana Php8.0, pelbagai jenis dibenarkan untuk ditentukan dalam parameter fungsi atau nilai pulangan. 4) Prompt jenis yang boleh dibatalkan: membolehkan untuk memasukkan nilai null dan mengendalikan fungsi yang boleh mengembalikan nilai null.

Bagaimanakah PHP mengendalikan pengklonan objek (kata kunci klon) dan kaedah sihir __clone?Bagaimanakah PHP mengendalikan pengklonan objek (kata kunci klon) dan kaedah sihir __clone?Apr 17, 2025 am 12:24 AM

Dalam PHP, gunakan kata kunci klon untuk membuat salinan objek dan menyesuaikan tingkah laku pengklonan melalui kaedah Magic \ _ _ _. 1. Gunakan kata kunci klon untuk membuat salinan cetek, mengkloning sifat objek tetapi bukan sifat objek. 2. Kaedah klon \ _ \ _ boleh menyalin objek bersarang untuk mengelakkan masalah menyalin cetek. 3. Beri perhatian untuk mengelakkan rujukan pekeliling dan masalah prestasi dalam pengklonan, dan mengoptimumkan operasi pengklonan untuk meningkatkan kecekapan.

PHP vs Python: Gunakan Kes dan AplikasiPHP vs Python: Gunakan Kes dan AplikasiApr 17, 2025 am 12:23 AM

PHP sesuai untuk pembangunan web dan sistem pengurusan kandungan, dan Python sesuai untuk sains data, pembelajaran mesin dan skrip automasi. 1.PHP berfungsi dengan baik dalam membina laman web dan aplikasi yang cepat dan berskala dan biasanya digunakan dalam CMS seperti WordPress. 2. Python telah melakukan yang luar biasa dalam bidang sains data dan pembelajaran mesin, dengan perpustakaan yang kaya seperti numpy dan tensorflow.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini