我创建了一个小的sql语句,并在phpmyadmin上对其进行了测试,并且效果很好,但是当我尝试从php调用它时,它返回false
$stmt = $con->prepare('
SELECT
@newId := COALESCE( MAX( OrderNumber ) , 0 ) +1
FROM
GSM_Parent;
INSERT INTO
GSM_Parent (OrderNumber)
VALUES ( (select @newId)) ');
此处$ stmt为假。
这些类型的sql语句是否可以与准备好的语句一起使用,还是必须使用常规的mysqli调用?
答案 0 :(得分:0)
您可以在不使用MySQL变量的情况下重写此查询。
INSERT INTO
GSM_Parent (OrderNumber)
values ( (SELECT COALESCE( MAX( OrderNumber ) , 0 ) +1 FROM GSM_Parent) )
谢谢,但出现以下错误:#1093-您无法指定目标 表'GSM_Parent'用于FROM子句中的更新。
确实,我想念您两次使用同一张表,下面的查询应该起作用。
INSERT INTO
GSM_Parent (OrderNumber)
VALUES (
(SELECT OrderNumber FROM (
SELECT
(COALESCE(MAX(OrderNumber), 0) + 1) AS OrderNumber
FROM
GSM_Parent
) AS GSM_Parent
)
)
@Jarth从评论中查询也是可能的,那么您需要编写
INSERT INTO
GSM_Parent (OrderNumber)
SELECT
OrderNumber
FROM(
SELECT COALESCE(MAX(OrderNumber), 0) +1 AS OrderNumber FROM GSM_Parent
) AS GSM_Parent