- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
跨多个相关表的重复行数据。
在 php 中,在使用第一个 mysqli_multi_query 后,我似乎无法从 mysqli_insert_id 获得 id 结果。
我已经使用 phpmyadmin 成功查询了以下内容(手动将 unit_id 替换为 1 并将 $unit_id1 替换为 61(下一个对应的)):
CREATE TEMPORARY TABLE tmp
SELECT `unit_id`,
`title`,
`status_id`,
`category_id`,
`tags`,
`access_id`
FROM unit_genData
WHERE `unit_id` = 1;# 1 row affected.
ALTER TABLE tmp
DROP COLUMN `unit_id`;# 1 row affected.
UPDATE tmp
SET `title` = 'DUPLICATE';# 1 row affected.
INSERT INTO unit_genData
SELECT 0,tmp.*
FROM tmp;# 1 row affected.
DROP TABLE tmp;# MySQL returned an empty result set (i.e. zero rows).
CREATE TEMPORARY TABLE tmp
SELECT `ad_id`,
`unit_id`,
`ad_title`,
`ad_image`,
`ad_img_caption`,
`ad_brief_desc`,
`ad_btn_text`
FROM unit_promoContent
WHERE `unit_id`=1;# 1 row affected.
ALTER TABLE tmp
DROP COLUMN `ad_id`;# 1 row affected.
UPDATE tmp
SET `unit_id` = 61;# 1 row affected.
INSERT INTO unit_promoContent
SELECT 0,tmp.*
FROM tmp;# 1 row affected.
DROP TABLE tmp;# MySQL returned an empty result set (i.e. zero rows).
注意:第一个 multi_query 成功复制了第一个表...第二个 multi_query 取决于 mysqli_insert_id 结果。
$sql1 = "CREATE TEMPORARY TABLE tmp
SELECT `unit_id`,
`title`,
`status_id`,
`category_id`,
`tags`,
`access_id`
FROM ".ID_TABLE."
WHERE `unit_id` = " . $id . ";
ALTER TABLE tmp
DROP COLUMN `unit_id`;
UPDATE tmp
SET `title` = 'DUPLICATE';
INSERT INTO ".ID_TABLE."
SELECT 0,tmp.*
FROM tmp;
DROP TABLE tmp;
";
$result = mysqli_multi_query($dbc,$sql1)
or die(mysqli_error($sql1));
$unit_id1 = mysqli_insert_id($dbc); // Store new unit_id as var // Tab 2 :: Promo Content
$sql2 = "CREATE TEMPORARY TABLE tmp
SELECT `ad_id`,
`unit_id`,
`ad_title`,
`ad_image`,
`ad_img_caption`,
`ad_brief_desc`,
`ad_btn_text`
FROM unit_promoContent
WHERE `unit_id`=" . $id . ";
ALTER TABLE tmp
DROP COLUMN `ad_id`;
UPDATE tmp
SET `unit_id` = ". $unit_id1 .";
INSERT INTO unit_promoContent
SELECT 0,tmp.*
FROM tmp;
DROP TABLE tmp;
";
$result = mysqli_multi_query($dbc,$sql2)
or die(mysqli_error($sql2));
最佳答案
最后,经过大量测试,我发现成功获取新行的 unit_id 的唯一方法是将第一个 mysqli_multi_query
分成单独的 mysqli_query
.
即使在这样做之后,我仍然发现我遇到了解析错误,所以我将 mysqli_insert_id
直接移动到 INSERT
查询下方。
现在我已经能够获得新的 unit_id,我能够为下一个复制表成功运行 mysqli_multi_query
。 但是,我遇到了同样的问题,包括要复制的剩余表,所以我最终发现我必须将所有 mysqli_multi_query
分成单独的 mysqli_query
.
请参阅下面的工作解决方案:
注意:ID_TABLE
在包含的 config.php 文件中定义(此处未显示)。这是一个标题为 unit_genData
的表*$id*
是一个 var,表示要复制的选定/选中行的初始 unit_id
$sql1 = "CREATE TEMPORARY TABLE tmp
SELECT `unit_id`,
`title`,
`status_id`,
`category_id`,
`tags`,
`access_id`
FROM ".ID_TABLE."
WHERE `unit_id` = " . $id . "";
$result = mysqli_query($dbc,$sql1) or die(mysqli_error($dbc));
$sql2 = "ALTER TABLE tmp
DROP COLUMN `unit_id`";
$result = mysqli_query($dbc,$sql2) or die(mysqli_error($dbc));
$sql3 = "UPDATE tmp
SET `title` = 'DUPLICATE'";
$result = mysqli_query($dbc,$sql3) or die(mysqli_error($dbc));
$sql4 = "INSERT INTO ".ID_TABLE."
SELECT 0,tmp.*
FROM tmp";
$result = mysqli_query($dbc,$sql4) or die(mysqli_error($dbc));
$unit_id1 = mysqli_insert_id($dbc); //$dbc->insert_id; // Store new unit_id as var
$sql5 = "DROP TABLE tmp;";
$result = mysqli_query($dbc,$sql5) or die(mysqli_error($dbc));
$data = "Insert_id for TABLE 1: ".$unit_id1.". ";
// Duplicate Table for Tab 2
// Promo Content
$sql6 = "CREATE TEMPORARY TABLE tmp
SELECT `ad_id`,
`unit_id`,
`ad_title`,
`ad_image`,
`ad_img_caption`,
`ad_brief_desc`,
`ad_btn_text`
FROM unit_promoContent
WHERE `unit_id`=" . $id . ";
$result = mysqli_query($dbc,$sql6) or die(mysqli_error($dbc));
$sql7 = "ALTER TABLE tmp
DROP COLUMN `ad_id`";
$result = mysqli_query($dbc,$sql7) or die(mysqli_error($dbc));
$sql8 = "UPDATE tmp
SET `unit_id` = ". $unit_id1 .";
$result = mysqli_query($dbc,$sql8) or die(mysqli_error($dbc));
$sql9 = "INSERT INTO unit_promoContent
SELECT 0,tmp.*
FROM tmp;";
$result = mysqli_query($dbc,$sql9) or die(mysqli_error($dbc));
$sql10 = "DROP TABLE tmp;";
$result = mysqli_query($dbc,$sql10) or die(mysqli_error($dbc));
# ======================================================= #
#...and so on...for the rest of the tables to duplicate...#
# ======================================================= #
mysqli_close($dbc);
关于php - mysqli_insert_id 因 mysqli_multi_query 而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27074779/
我正在执行 mysqli_multi_query(),其中包含 2 个查询: UPDATE Customers SET balance = balance + 15 WHERE ck
我正在通过 php 脚本更新 mysql 数据。我希望使用 mysqli_multi_query() 而不是 mysql_query。我要执行 N 个更新查询。请建议多查询是否有助于缩短执行时间。 A
我确信这个问题甚至在这个类(class)的创建者的博客上都没有问过。 从早上开始我就开始使用 bennettstone 的 php 数据库类.我试图将 MYSQLI_MULTI_QUERY 添加到此类
我在使用 mysqli_multi_query 时遇到问题。我可以多次INSERT INTO,但是一旦包含DELETE,所有后续查询都将不起作用。有趣的是,当将此查询粘贴到 phpMyAdmin SQ
只是想知道函数 mysqli_multi_query 是否仅连接到数据库一次或每个查询? 最佳答案 是的,因为它使用 $link 作为连接 ID http://php.net/manual/en/my
我在 mysqli_multi_query 的帮助下触发了以下查询。哪个执行正确但没有返回任何值。它返回空白。 mysqli_multi_query 有什么问题,或者是否有任何替代方法可以在 code
我正在对 PHP 执行 ajax 调用,它应该执行 2 个 SQL 查询。查询如下所示: $sql = "UPDATE customers SET customers_newsletter=1 WHE
$databases = array(); $path = '/Path/To/Directory'; $main_link = mysqli_connect('localhost', 'USERNA
使用 SO 上其他地方的示例来更好地捕获“隐藏”错误。虽然下面的代码将捕获并返回错误,但是否可以改进它以报告发生错误的查询? 使用下面的代码,输出是: Columns: 18 Error: You h
我正在尝试在下面的代码中使用 mysqli_multi_query 函数,但遇到了这个错误: 命令不同步;你现在不能运行这个命令 // add call stats to incoming nodes
我一直在尝试执行多个查询,因此我寻找了一种更好的方法来执行此操作,并且我在 php 中阅读了mysqli_multi_query。 我自己尝试了一下看看结果,但它一直给我错误。代码如下: $studi
我正在为我的 Android 应用程序创建 PHP API,该应用程序将用于扫描 QR 码。该 API 的一部分是检查扫描的代码是否有效并且可以在某个时刻进行扫描。 整个检查部分是MariaDB数据库
我以前从未使用过 mysqli_multi_query,它让我难以置信,我在网上找到的任何示例都无法帮助我准确地弄清楚我想要做什么。 这是我的代码: ">
我正在尝试提交 mysql 多重查询,但我不能... 当mysqli_multi_query“查询”有多个查询时无法提交。但是,当 mysqli_multi_query“查询”具有唯一查询时,它会被正
我正在运行多个 UPDATE SQL 查询: $queriesRun = mysqli_multi_query($connection, $queries); 现在,我如何循环遍历结果以了解哪些查询成
我在脚本的多个实例中使用了mysqli_multi_query()的程序版本。每次我使用这个函数时,它都会破坏我通过mysqli_connect()获得的连接。 这对我的 mysqli_insert_
我正在尝试使用 mysqli_multi_query() 从多个表中获取所有了解“Photoshop”的用户及其所有详细信息。我也得到了结果,但是也有一些不速之客以及正确的结果是空的。他们为什么会在这
我正在尝试删除我的主表“eleve”,同时删除主键在此的其他表。我尝试了所附代码,但出现错误: (Erreur de syntaxe pr�s de 'from bource where ID_BOU
我正在尝试做一个 mysqli_multi_query。由于某种原因,它不会工作。这是我到目前为止所做的: orderid 由ajax 给出。 最佳答案 查询必须用;分隔。 $sql = "INSE
我正在使用这段代码: $mysqli = new mysqli(...); $sql = file_get_contents("my_sql_file.sql"); $result = $mysqli
我是一名优秀的程序员,十分优秀!