Относительно SQLite3 и следующего PHP кода,
Я ожидаю, что когда запись существует, я получаю исключение, чтобы знать, что произошел конфликт, и запись не была вставлена в базу данных
На данный момент я не получаю исключения, и запись тоже не вставлена! (поскольку запись уже существует в базе данных)
Итак, как я могу знать, что запись не была вставлена, когда все выглядит нормально?
public function addRecord($mStore_M4_DataClass)
{
try
{
$sql = 'INSERT INTO M4(M4_M2,'
. 'M4_M3,'
. 'M4_Barcode,'
. 'M4_Enable,'
. 'M4_Name,'
. 'M4_Price,'
. 'M4_Discount,'
. 'M4_Image1,'
. 'M4_Image2,'
. 'M4_Image3,'
. 'M4_Image4,'
. 'M4_Image5,'
. 'M4_Image6,'
. 'M4_Image7,'
. 'M4_Image8,'
. 'M4_Image9,'
. 'M4_Image10,'
. 'M4_A,'
. 'M4_B,'
. 'M4_C,'
. 'M4_D,'
. 'M4_E,'
. 'M4_F,'
. 'M4_G,'
. 'M4_H,'
. 'M4_I,'
. 'M4_J) '
. 'VALUES(:M4_M2,'
. ':M4_M3,'
. ':M4_Barcode,'
. ':M4_Enable,'
. ':M4_Name,'
. ':M4_Price,'
. ':M4_Discount,'
. ':M4_Image1,'
. ':M4_Image2,'
. ':M4_Image3,'
. ':M4_Image4,'
. ':M4_Image5,'
. ':M4_Image6,'
. ':M4_Image7,'
. ':M4_Image8,'
. ':M4_Image9,'
. ':M4_Image10,'
. ':M4_A,'
. ':M4_B,'
. ':M4_C,'
. ':M4_D,'
. ':M4_E,'
. ':M4_F,'
. ':M4_G,'
. ':M4_H,'
. ':M4_I,'
. ':M4_J)';
$stmt = $this->pdo->prepare($sql);
$stmt->execute([
':M4_M2' => $mStore_M4_DataClass->getM4_M2 (),
':M4_M3' => $mStore_M4_DataClass->getM4_M3 (),
':M4_Barcode' => $mStore_M4_DataClass->getM4_Barcode (),
':M4_Enable' => $mStore_M4_DataClass->getM4_Enable (),
':M4_Name' => $mStore_M4_DataClass->getM4_Name (),
':M4_Price' => $mStore_M4_DataClass->getM4_Price (),
':M4_Discount' => $mStore_M4_DataClass->getM4_Discount(),
':M4_Image1' => $mStore_M4_DataClass->getM4_Image1 (),
':M4_Image2' => $mStore_M4_DataClass->getM4_Image2 (),
':M4_Image3' => $mStore_M4_DataClass->getM4_Image3 (),
':M4_Image4' => $mStore_M4_DataClass->getM4_Image4 (),
':M4_Image5' => $mStore_M4_DataClass->getM4_Image5 (),
':M4_Image6' => $mStore_M4_DataClass->getM4_Image6 (),
':M4_Image7' => $mStore_M4_DataClass->getM4_Image7 (),
':M4_Image8' => $mStore_M4_DataClass->getM4_Image8 (),
':M4_Image9' => $mStore_M4_DataClass->getM4_Image9 (),
':M4_Image10' => $mStore_M4_DataClass->getM4_Image10 (),
':M4_A' => $mStore_M4_DataClass->getM4_A (),
':M4_B' => $mStore_M4_DataClass->getM4_B (),
':M4_C' => $mStore_M4_DataClass->getM4_C (),
':M4_D' => $mStore_M4_DataClass->getM4_D (),
':M4_E' => $mStore_M4_DataClass->getM4_E (),
':M4_F' => $mStore_M4_DataClass->getM4_F (),
':M4_G' => $mStore_M4_DataClass->getM4_G (),
':M4_H' => $mStore_M4_DataClass->getM4_H (),
':M4_I' => $mStore_M4_DataClass->getM4_I (),
':M4_J' => $mStore_M4_DataClass->getM4_J (),
]);
return TRUE;
}
catch (\PDOException $e)
{
return FALSE;
}
}
Если запись не существует, она вставляется и из этой функции возвращается ИСТИНА
Если запись уже существует, ИСТИНА возвращается снова!
И следующее код создать код таблицы:
public function createTable() {
try
{
$commands = [
'CREATE TABLE IF NOT EXISTS M4 (
id INTEGER PRIMARY KEY,
M4_M2 TEXT,
M4_M3 TEXT,
M4_Barcode TEXT,
M4_Enable TEXT,
M4_Name TEXT,
M4_Price TEXT,
M4_Discount TEXT,
M4_Image1 TEXT,
M4_Image2 TEXT,
M4_Image3 TEXT,
M4_Image4 TEXT,
M4_Image5 TEXT,
M4_Image6 TEXT,
M4_Image7 TEXT,
M4_Image8 TEXT,
M4_Image9 TEXT,
M4_Image10 TEXT,
M4_A TEXT,
M4_B TEXT,
M4_C TEXT,
M4_D TEXT,
M4_E TEXT,
M4_F TEXT,
M4_G TEXT,
M4_H TEXT,
M4_I TEXT,
M4_J TEXT
)',
'CREATE UNIQUE INDEX idx_positions_title ON M4 (M4_M2,M4_M3,M4_Barcode)'
];
foreach ($commands as $command) {
$this->pdo->exec($command);
}
return TRUE;
}
catch (\PDOException $e)
{
return FALSE;
}
}