我有一个函数,旨在借助 sql 查询复制具有所有属性的产品。我的问题是完成后将 new_product_id 返回给 php 。
如果我在 phpmyadmin 中运行 sql 脚本,则一切正常。如果我使用 php 函数运行 sql 脚本,则一切正常。
我需要帮助的是如何将上次查询中的 mysql-set-variable: @new_product_id 分配给我想要返回的 php 变量。
----- sql查询------
CREATE TEMPORARY TABLE tmptable SELECT * FROM product WHERE id='19' AND site_id='1';
UPDATE tmptable SET id = 0,parent_id='19',status_id='1',name_internal=concat('NEW ',name_internal);
INSERT INTO product SELECT * FROM tmptable;
SET @new_product_id = LAST_INSERT_ID();
DROP TABLE tmptable;
CREATE TEMPORARY TABLE tmptable SELECT * FROM product_abcd WHERE product_id='19' AND site_id='1';
UPDATE tmptable SET product_id = @new_product_id,id=0;
INSERT INTO product_abcd SELECT * FROM tmptable;
DROP TABLE tmptable;
CREATE TEMPORARY TABLE tmptable SELECT * FROM product_efgh WHERE product_id='19' AND site_id='1';
UPDATE tmptable SET product_id = @new_product_id,id=0;
INSERT INTO product_efgh SELECT * FROM tmptable;
DROP TABLE tmptable;
(Here is more correct SQL insert statements)
SELECT @new_product_id AS new_product_id;
----- php函数(不完整)------
上面的代码有效,我得到了一个很好的产品副本,结果 =0 表示失败,结果 1 表示成功,(这有效)
我希望它的工作方式是 result= 0 失败, result= new_product_id 成功,这样我就可以将用户重定向到新创建的产品,从而节省用户一键点击。
查询结果,来自 phpmyadmin 的结果与来自 php 的结果相同(到目前为止一切都很好,目前没有错误的查询)
Mysql返回空结果(没有行)(创建临时表)
1 行受影响(更新临时表)
1 行插入(插入产品中)
mysql 返回空结果(设置 $new_product_id)
mysql 返回空结果(删除 tmp 表)
mysql返回空结果(创建临时表)
mysql x 行受影响(更新 tmp 表)
mysql x 受影响的行(插入表中)
mysql 返回空结果(删除表 tmptable)
mysql返回空结果(创建临时表).... N.....最后一个查询“显示行0-0(总共1行)(选择@new_product_id)new_product_id = 25
我尝试了什么? 我将 select 变量作为我的最终查询,我认为只检查最后一个查询并在那里分配变量是明智的,但由于 php mysqli fetch_assoc 在非对象上不可能,所以我失败了。
所以接下来的事情就没那么光明了,我知道我有 16 个来自 mysql 的结果,我只需要其中一个的结果,但无论如何我把它放在多查询中
慕工程0101907
绝地无双
哔哔one