Comment puis-je obtenir la requête pour insérer ma ligne d'une table à une autre? J'utilise l'insert traditionnel select delete. Maintenant, la chose qui fonctionne est la suppression du commerce. Cependant, les valeurs ne sont pas mises à jour dans la nouvelle table. J'ai utilisé une constante dans la deuxième table parce que les tables ont des colonnes sans correspondance, quel pourrait être le problème ici?Insertion dans la base de données
<?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');
?>
Vous ne vérifiez pas le code retour de 'query'. Êtes-vous sûr qu'il va lancer une exception en cas d'échec? http://stackoverflow.com/questions/14578243/turning-query-errors-to-exceptions-in-mysqli – rutter
Je suggérerais de répercuter la requête et de l'exécuter directement dans la base de données. Est-ce que ça marche? Vous ne vérifiez pas non plus les valeurs de retour de vos appels 'query()', vous ne savez donc pas si quelque chose échoue. – andrewsi