ホームページ  >  記事  >  バックエンド開発  >  2 つの PHP テーブルの内容はどのように相互に呼び出しますか?

2 つの PHP テーブルの内容はどのように相互に呼び出しますか?

WBOY
WBOYオリジナル
2016-06-23 13:50:521043ブラウズ

在这期好声音中,曾在湖南卫视《百变大咖秀》中担任声乐老师的魏雪漫将登场。[img]115[/img]此外,从下周开始,每位导师都会带着自己的梦想导师参与团队对战,因此,梦想导师人选就成为大家揣测的对象,传言的版本令人目不暇接。 [img]119[/img]在本周最后出场的四位学员中,歌手魏雪漫可谓是最大牌的学员,她于[img]165[/img]

这是数据表news里的body字段的。但是图片在pic表里。[img]165[/img]中间的数字是pic表的ID,图片地址存在对应的ID后的add字段里。
要正确显示这个新闻 php代码应该怎么写。


回复讨论(解决方案)

输出该文本时,将形如 [img] 115[/img] 的替换成形如 f5e41cb4f163ddc4a69fd9486ea23d8e 的
在 pic.php 中通过传入的 id 查找并输出图片数据

谢谢  能说的仔细点吗?我对正册不熟悉。

$s =<<< TXT在这期好声音中,曾在湖南卫视《百变大咖秀》中担任声乐老师的魏雪漫将登场。[img]115[/img]此外,从下周开始,每位导师都会带着自己的梦想导师参与团队对战,因此,梦想导师人选就成为大家揣测的对象,传言的版本令人目不暇接。 [img]119[/img]在本周最后出场的四位学员中,歌手魏雪漫可谓是最大牌的学员,她于[img]165[/img]TXT;echo preg_replace('/\[img\](\d+)\[\/img\]/', '<img src="pic.php?id=$1">', $s);
在这期好声音中,曾在湖南卫视《百变大咖秀》中担任声乐老师的魏雪漫将登场。06fb8e56990d1b2d52fd1ec2387ab15e此外,从下周开始,每位导师都会带着自己的梦想导师参与团队对战,因此,梦想导师人选就成为大家揣测的对象,传言的版本令人目不暇接。 e2f4ed986040bfc5f0be07cffb476401在本周最后出场的四位学员中,歌手魏雪漫可谓是最大牌的学员,她于dd8e9f81e64402591ce89c288c36425d

pic.php?id=165读出来是img/110358tp58ocjpmn8paoob.jpg

但是dd8e9f81e64402591ce89c288c36425d 图片显示不出来

pic.php翻译的图片路径,是否正确?

pic.php?id=165读出来是img/110358tp58ocjpmn8paoob.jpg

但是dd8e9f81e64402591ce89c288c36425d 图片显示不出来


你要么302到真实图片地址,要么把图片读取出来输出,而不是就输出一个地址的字符串。

#1 中我说了“在 pic.php 中通过传入的 id 查找并 输出图片数据”
你认可了这个方案,所以才有了 #3 中的代码
那么你为什么只输出图片路径,而不输出图片数据呢?

如果你只打算输出图片路径的话,即将 [img]165[/img] 处理成 59a2bd2d2cfb598be7400e2c5b2e202e
那就

echo preg_replace_callback('/\[img\](\d+)\[\/img\]/', function($r) {  return '<img src="' . getpicid($r[1]) . '">'; }, $s);
函数 getpicid 用于从传入的 id 获取对应的图片路径

$s=<<< TXT在这期好声音中,曾在湖南卫视《百变大咖秀》中担任声乐老师的魏雪漫将登场。[img]115[/img]此外,从下周开始,每位导师都会带着自己的梦想导师参与团队对战,因此,梦想导师人选就成为大家揣测的对象,传言的版本令人目不暇接。 [img]119[/img]在本周最后出场的四位学员中,歌手魏雪漫可谓是最大牌的学员,她于[img]165[/img]TXT;$s=preg_replace('/\[img\](\d+)\[\/img\]/', function($r) {  return '<img src="' . getpicid($r[1]) . '">'; }, $s);	echo $s;


这是我的pic.php的代码
错误提示:Parse error: syntax error, unexpected T_FUNCTION 指向$s=preg_replace('/\[img\](\d+)\[\/img\]/', function($r) {这一行

你的 php 版本是过少?

php 版本是5.3

对不起我晕了
图片在pic表里,只有id和图片地址两个字段。
$s=preg_replace('/\[img\](\d+)\[\/img\]/', function($r)  放pic.php里显然不合适。
但是放在dd8e9f81e64402591ce89c288c36425d 这里有不知道如何连接数据表或是pic.php文件

$s=<<< TXT在这期好声音中,曾在湖南卫视《百变大咖秀》中担任声乐老师的魏雪漫将登场。[img]115[/img]此外,从下周开始,每位导师都会带着自己的梦想导师参与团队对战,因此,梦想导师人选就成为大家揣测的对象,传言的版本令人目不暇接。 [img]119[/img]在本周最后出场的四位学员中,歌手魏雪漫可谓是最大牌的学员,她于[img]165[/img]TXT;$s=preg_replace_callback('/\[img\](\d+)\[\/img\]/', function($r) {  return '<img src="' . getpicid($r[1]) . '">'; }, $s);	echo $s;function getpicid($id) {  return $id.'.gif';}
在这期好声音中,曾在湖南卫视《百变大咖秀》中担任声乐老师的魏雪漫将登场。9f94acc939c6c538a5a6713e57a397de此外,从下周开始,每位导师都会带着自己的梦想导师参与团队对战,因此,梦想导师人选就成为大家揣测的对象,传言的版本令人目不暇接。 3bb2b68fe477f466e98a9b23c177ea45在本周最后出场的四位学员中,歌手魏雪漫可谓是最大牌的学员,她于3fd05c277c63b6971ac2b009380c591b

这样在文本是没有问题但是

图片在pic表里,只有id和图片地址两个字段。
$s=preg_replace('/\[img\](\d+)\[\/img\]/', function($r)  放pic.php里显然不合适。
但是放在dd8e9f81e64402591ce89c288c36425d 这里有不知道如何连接数据表或是pic.php文件

你可在 getpicid 函数里查表获取 id 对应的图片地址
这样就填到正文里了

按原方案,查询不在输出正文时进行。而是在浏览器读取图片是进行的
你读到图片地址后 readifle('图片地址') 就是输出图片数据了

pic.php的代码

<?$result1=mysql_query("SELECT * FROM `pic` where id = '".$_GET['id']."'");while($row=mysql_fetch_array($result1)){?> <? $str=$row[attachment]; $str=preg_replace('/\[img\](.+?)\[\/img\]/', function($str) {  return '<img src="' . getpicid($str[1]) . '">'; }, $str);	echo $str; ?><?}?>


show.php的代码
<?$result1=mysql_query("SELECT * FROM `news` where id = '".$_GET['id']."'");while($row=mysql_fetch_array($result1)){?><?	$str=$row[message];	$str=preg_replace('/\[img\](\d+)\[\/img\]/', '<img src="pic.php?aid=$1">', $str);	echo $str;	?><?}?>

你可在 getpicid 函数里查表获取 id 对应的图片地址
这样就填到正文里了

按原方案,查询不在输出正文时进行。而是在浏览器读取图片是进行的
你读到图片地址后 readifle('图片地址') 就是输出图片数据了



原方案。pic.php里我用 echo readifle("img/359z0ycw7c3p6z39c73.jpg"); 前台还是不显示 

文件存在吗?路径对吗?

文件和路径都对

文件存在吗?路径对吗?



出现错误提示:Fatal error: Call to undefined function readifle()

文件和路径都对



都对

readfile

readfile



Warning: readfile() [function.readfile]: open_basedir restriction in effect. File(img/359z0ycw7c3p6z39c73.jpg) is not within the allowed path(s)

readfile 要不要先声明一下或引用什么的

百度翻译:警告:readfile() [功能]:ReadFile。open_basedir限制效应。(IMG文件/ 359z0ycw7c3p6z39c73。JPG)不在允许的路径(的)

我改成这样echo readifle("http://localhost/img/359z0ycw7c3p6z39c73.jpg");  pic.php读出一堆乱码,应该是图片数据了。但是bcbbdc35bf1e0194cf88b1469b324206还是不显示图片 就一个红叉

都报错了,还能显示图片?

我改成这样echo readifle("http://localhost/img/359z0ycw7c3p6z39c73.jpg"); 不报错了。
 pic.php读出一堆乱码,应该是图片数据了。
但是bcbbdc35bf1e0194cf88b1469b324206还是不显示图片 就一个红叉

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。