php - 多语句查询 mySQL/PHP

标签 php mysql

这是我第一次尝试在 mySQL 数据库上使用 PHP 运行查询。 假设我创建了一个有效的 MDB2 db 对象,如下所示: $db = MDB2::connect(....

我想执行一个查询($query),如下所示:

SET @node_id := (SELECT cp_node_id FROM ilias.cp_item AS T1 WHERE id="ITEM-2008-11-28-8-6-5-281");
SET @id := (SELECT cmi_node_id FROM ilias.cmi_node AS T2 WHERE user_id=189 AND cp_node_id=@node_id);
SET @id = ifnull(@id, (SELECT MAX(cmi_node_id) FROM ilias.cmi_node AS T2)+1);
SET @id = ifnull(@id, 0);

INSERT INTO ilias.cmi_node
(cmi_node_id, user_id, cp_node_id, completion_status,
learner_name, progress_measure, success_status, scaled, c_timestamp)
VALUES
(@id, 189, @node_id, "completed",
"Luca Viggiani", 1.0, "passed", NULL, NOW())

ON DUPLICATE KEY UPDATE
completion_status=VALUES(completion_status),
learner_name=VALUES(learner_name),
progress_measure=VALUES(progress_measure),
success_status=VALUES(success_status),
c_timestamp=VALUES(c_timestamp);

假设上面的文本在$query中,我尝试了

$db->exec($query);

$db->extended->executeMultiple($query);

但没有任何效果。

请考虑上述查询在 MySQL Workbench 中运行良好。另外请考虑像这样从 PHP 运行一个简单的(单语句)查询,它也工作得很好:

$db->exec("INSERT INTO ilias.cmi_node (cp_node_id) VALUES (5);");

编辑: 同样,像这样的更简单(两个语句)查询在 PHP 中失败,但在 MySQLWOrkBench 中工作:

$query2 = "SET @node_id := (SELECT cp_node_id FROM ilias.cp_item AS T1 WHERE id='ITEM-2008-11-28-8-6-5-281');".
                  " INSERT INTO ilias.cmi_node (cp_node_id) VALUES (@node_id);";

最佳答案

我认为 MDB2 可能以某种方式改变了您的查询。因此,要找到它,您需要记录数据库中正在执行的查询(看看: http://dev.mysql.com/doc/refman/5.1/en/query-log.htmlHow to show the last queries executed on MySQL? )。

关于php - 多语句查询 mySQL/PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21161595/

相关文章:

mysql - 在 FROM 中使用子查询进行 HQL

mysql - SQL 计算行中等于特定值的列

mysql - SQL "LIKE"查询找不到我所知道的内容

mysql 合并行重复的单元格

php - 有没有办法在插入 MYSQL 时通知用户成功/错误?

PHP 包含实践

php - 我想要一个包含自定义参数的点赞按钮,我该怎么做?

php - 将 $id 从 Blade 传递到 Controller 方法显示 Laravel 4

php - 什么时候在快速结账 paypal api 中访问取消 url?

php - MySQL Jquery 更新数组?