Ben 2 veya daha fazla değil aynı sorguları yürütmek gerekir (bu örnekte INSERT
'ın.) PHP'nin hazır deyimleri ve MySQL'ın işlemlerini kullanarak. Yani, bir 2 INSERT
ifadem varsa, bunların ikisini de isterim, isterse bunların hiçbirini istemiyorum.MySQL'in işlemiyle PHP'nin hazırladığı istatistikleri kullanarak çoklu sorguları nasıl yürütürüm?
:
START TRANSACTION;
INSERT INTO `file` (`name`, `mime_type`, `size`, `comment`) VALUES ('file.png', 'image/png', '1024', 'My comment');
INSERT INTO `complementary_file` (`file_id`, `user_id`) VALUES (LAST_INSERT_ID(), '1');
COMMIT;
PHP kodu Üzerinde çalıştığım: Ben daha kritik olması
mysqli_autocommit($connection, FALSE);
if ($stmtFile = mysqli_prepare($connection, "INSERT INTO `file` (`name`, `mime_type`, `size`, `comment`) VALUES (?, ?, ?, ?)")) {
mysqli_stmt_bind_param($stmtFile, 'ssis', $name, $mime_type, $size, $comment);
if (mysqli_stmt_execute($stmtFile)) {
if ($stmtComplementaryFile = mysqli_prepare($connection, "INSERT INTO `complementary_file` (`file_id`, `user_id`) VALUES (?, ?)")) {
mysqli_stmt_bind_param($stmtComplementaryFile, 'ii', mysqli_insert_id($connection), $user_id);
mysqli_stmt_execute($stmtComplementaryFile);
}
} else {
mysqli_rollback($connection);
}
}
mysqli_commit($connection);
PHP eserleri Yukarıdaki kod ama ne olursa yürütme ifadeleri? Aynı anda PHP'nin hazırlanan Tabloları ve işlemlerle ifadeleri çalıştırmak için iyi bir yol vardır mı?
$stmtComplementaryFile
için bir mysqli_insert_id()
değere sahip olması gerektiğini lütfen unutmayın. Ayrıca bu kod ile PDO kullanmadığımı lütfen unutmayın - Öneriler MySQLi olacaksa teşekkür ederim. Teşekkürler.
izledi? (not: bu, sorunuzu cevaplamak değil, sadece merak ediyorum çünkü bir işlemi çeviriyorsunuz ama PHP'de bir işlem kullanmıyorsunuz). ($ Bağlantısı, YANLIŞ) mysqli_autocommit '' sonra;; – apokryfos
ben 'mysqli_begin_transaction ($ bağlantısı, MYSQLI_TRANS_START_READ_ONLY) eklenir' ve şimdi her ikisi 'INSERT' en çalışmaz. –
Tahminimce salt okunur bir işlem olduğunda işe yaramaz. – apokryfos