반응형
MySql 트랜잭션은 콘솔에서만 작동합니다.
이것을 MySql 콘솔에 붙여넣을 때
START TRANSACTION;
INSERT INTO `orders` (customer_id) VALUES ('2');
SET @lastid=LAST_INSERT_ID();
INSERT INTO `transactions`
(order_id,product_id,product_quantity,price,ammount,customer_id)
VALUES (@lastid,'3','2','4','4','2');
INSERT INTO `transactions`
(order_id,product_id,product_quantity,price,ammount,customer_id)
VALUES (@lastid,'1','3','5','4','2');
COMMIT;
제가 php를 통해 동일하게 하려고 할 때 잘 작동합니다.
$sql = "START TRANSACTION;";
$sql .="INSERT INTO `orders` (customer_id) VALUES ('$customer_id_form');";
$sql .="SET @lastid=LAST_INSERT_ID();";
foreach ($product_id_form as $key => $product){
$sql .= "INSERT INTO `transactions`
(order_id,product_id,product_quantity,price,ammount,customer_id)
VALUES
(@lastid,'$product','$quantity_form[$key]',
'$price_form[$key]','$amount_form[$key]','$customer_id_form');";
}
$sql .= "COMMIT;";
//$sql = "INSERT INTO products (`product_name`,`curent_price`,`product_quota`) VALUES ('$productname_form','$productprice_form','$productquote_form')";
if ($con->query($sql) === TRUE) {
echo "New record created successfully";
header("Location: order.php");
} else {
echo "Error: " . $sql . "<br>" . $con->error;
}
mysqli_close($con);
작동하지 않음 오류는 다음과 같습니다.
SQL 구문에 오류가 있습니다. 'INSERT INTO' 근처에서 사용할 올바른 구문은 MariaDB 서버 버전에 해당하는 설명서를 참조하십시오.
orders
(customer_id) 값('2');SET @lastid=LAST_INSERT_ID();라인 1의 INS'
쿼리를 한 번에 하나씩 수행합니다. 한 번에 모두 서버로 보내지 마십시오.START
...COMMIT
트랜잭션 의미론을 결정합니다.
다중 쿼리를 실행하려면 multi_query가 필요할 것 같습니다.
언급URL : https://stackoverflow.com/questions/41786586/mysql-transaction-works-only-in-console
반응형
'source' 카테고리의 다른 글
MAX(날짜)까지 선택하는 방법은? (0) | 2023.09.04 |
---|---|
요소 인덱스를 상위 요소에 대한 하위 요소로 가져옵니다. (0) | 2023.09.04 |
경고:창 계층 구조에 없는 *에 * 표시 시도 - swift (0) | 2023.09.04 |
regexp 파라미터로 SELECT를 수신하면 교대로만 작동합니다(홀수 시간만). (0) | 2023.09.04 |
JSON.parse()가 작동하지 않습니다. (0) | 2023.09.04 |