php - 更改 MySql 中的变量

标签 php mysql

我有这个代码。

$db_update_syntax = array(
        "INSERT INTO posts (SELECT NULL,'TEMP','".$data->cid."',title,img,redirect,redirect_full,site_name,description,longurl,shorturl,publishdate,publishtime,platform,post_type,youth,volunteers,biomed,img_idea,client,category,sme,approved,featured,announce,dynamic_content,trash,archive,NULL FROM posts WHERE cid='".$orig_cid."' AND trash != 1)",

        "SET @subdomain = (SELECT SUBSTRING_INDEX(guid, '-', 1) FROM posts WHERE cid ='".$orig_cid."' limit 1)",
        "SET @html = (SELECT LEFT(longurl, LENGTH(longurl) - LOCATE('/', REVERSE(longurl))+1) FROM posts WHERE cid ='".$orig_cid."' limit 1)",
        "SET @postid = (SELECT id FROM posts WHERE cid ='".$orig_cid."' limit 1)",
        "SET @newpostid = (SELECT id FROM posts WHERE cid ='".$data->cid."' limit 1)",

        "UPDATE posts SET guid=CONCAT(@subdomain,'-',id) WHERE cid='".$data->cid."'",
        "UPDATE posts SET longurl=CONCAT(@html,id,'.html') WHERE cid='".$data->cid."'",

        "INSERT INTO platform_xrf (SELECT NULL,0,platformid FROM platform_xrf WHERE postid=@postid)",
        "UPDATE platform_xrf SET postid=@newpostid WHERE postid=0"
        );

我有三个表:post 表、platform 表和 platform_xrf 表。

与每个帖子关联的平台存储在 platform_xrf 表中。

当帖子重复时,我还需要复制 platform_xrf 表中的关联行,然后使用新的帖子 ID 更新这些新行。

我遇到的问题是我的 SET @postid 和 SET @newpostid。

如果我取出 LIMIT 1,查询会失败,但如果我保留它,并且有两个或更多帖子被重复,则只会重复一个。

最佳答案

更改最后一个INSERT,以便它使用原始查询来获取要复制的所有行,而不是设置变量。

INSERT INTO platform_xrf
SELECT NULL, 0, platformid
FROM platform_xrf AS x
JOIN posts AS p ON p.id = x.postid
WHERE p.cid = $orig_cid

UPDATE platform_xrf AS x
CROSS JOIN posts AS p
SET x.postid = p.id
WHERE x.postid = 0
AND p.cid = $data->cid

我不确定如果 @newpostid 查询返回多个 ID,您期望会发生什么。您只能将其中之一存储到 postid = 0 的所有 platform_xrf 行中。

关于php - 更改 MySql 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40244814/

相关文章:

php - 如何编辑 joomla 插件?

PHP/MySql 到 javascript 不工作

mysql - 试图获取名字和姓氏

mysql - 将 MySQL CHAR(1) 列转换为 TINTINT

mysql - 简化 LEFT JOIN

php - 如何检测代理/垃圾邮件访问者?

php - 如何在php中获取上周(星期二或任何其他日期)的日期?

PHP MySQL 使用 isset($_GET)

php - Laravel 5.2 getDirty 总是空数组

javascript - 重新加载具有相同内容的 div