如何获取查询以将我的行从一个表插入另一个表?我使用传统的插入选择删除。现在有效的是删除交易。但是新表中的值没有更新。我在第二个表中使用了一个常量,因为表中有不匹配的列,这可能是什么问题?
<?php
//If(!isset($trade_id)){
$trade_id= $_GET['id'];
//}
require_once('connect.php');
$mysqli = new mysqli($database_hostname, $database_username, $database_password, $database_name) or exit("Error connecting to database");
try {
// First of all, let's begin a transaction
$mysqli->autocommit(FALSE);
// A set of queries; if one fails, an exception should be thrown
$mysqli->query("INSERT INTO `trade_history1` (session_id, trade_id, selection, date, type, size, bidprice, offerprice, stoploss, takeprofit,dateclose,close, profitandloss)
SELECT session_id, trade_id, selection, date, type, size, bidprice, offerprice, stoploss, takeprofit, profitandloss,'null','null'
FROM `opentrades`
WHERE `trade_id` = " . $trade_id);
$mysqli->query("DELETE FROM `opentrades` WHERE `trade_id` = " . $trade_id);
// If we arrive here, it means that no exception was thrown
// i.e. no query has failed, and we can commit the transaction
$mysqli->commit();
$_SESSION['message'] = 'Successfully deleted';
} catch (Exception $e) {
// An exception has been thrown
// We must rollback the transaction
$_SESSION['message'] = 'Unable to delete';
$mysqli->rollback();
}
// if we successfully delete this, we
$mysqli->close();
// bid price,offer price, size,type,
header('location:js.php');
?>
答案 0 :(得分:0)
use following code
mysqli_execute();instead of mysqli_query();
$mysqli->execute("INSERT INTO `trade_history1` (session_id, trade_id, selection, date, type, size, bidprice, offerprice, stoploss, takeprofit,dateclose,close, profitandloss)
SELECT session_id, trade_id, selection, date, type, size, bidprice, offerprice, stoploss, takeprofit, profitandloss,'null','null'
FROM `opentrades`
WHERE `trade_id` = " . $trade_id);
$mysqli->execute("DELETE FROM `opentrades` WHERE `trade_id` = " . $trade_id);
答案 1 :(得分:0)
我不知道sql查询中的常量,但它似乎是在查询中插入和选择的顺序,因为你使用的是最后四个:
takeprofit, dateclose, close, profitandloss
应按顺序
takeprofit, 'null', 'null', profitandloss
答案 2 :(得分:0)
失败的查询不会引发异常。你有回显查询并在phpmyadmin中执行它。像这样你可以钻到底部。
在删除行之前,必须使用mysqli_error()
来验证插入查询是否正确执行。