簡體   English   中英

PDO不能在表格中插入多於一行

[英]PDO not inserting more than one row in table

我在將圖像數據插入數據庫時​​遇到麻煩。 我有一張叫images的桌子。 用PHPMyAdmin轉儲時,它看起來像這樣:

CREATE TABLE IF NOT EXISTS `images` (
  `id` int(11) NOT NULL,
  `orig_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `hash` varchar(6) COLLATE utf8_unicode_ci NOT NULL,
  `filename` varchar(12) COLLATE utf8_unicode_ci NOT NULL,
  `uploaded` datetime NOT NULL,
  `views` int(11) NOT NULL DEFAULT '0',
  `album_id` int(11) DEFAULT NULL,
  `user_id` int(11) DEFAULT NULL,
  `server_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`),
  KEY `server_id` (`server_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

這是我用來插入行的代碼:

// Database connection
$db = new PDO('mysql:host=localhost;dbname=testdb', 'root', '');                  

// some code...

$st = $db->prepare('INSERT INTO `images` (orig_name, hash, filename, uploaded, server_id)
                    VALUES (?, ?, ?, ?, (SELECT `id` FROM `servers` WHERE `name` = ?))');
$st->execute(array($origName, $fileHash, $filename, date('c'), $server));

// more code...

// Database cleanup
$st = null;
$db = null;

該腳本不會返回任何錯誤,並且對於插入的第一行而言,它可以完美地工作。 如果腳本再次運行,它將無法在images表中插入更多行。 我沒有理由這么認為,每次進入每個字段的數據都是唯一的(server_id字段除外)。

您的id字段未設置為auto_increment。

您添加的第一條記錄將被添加, id為NULL; 第二條記錄將不會被添加,因為已經有一條記錄以NULL作為主鍵,所以它將失敗-您在代碼中沒有任何錯誤檢查,因此它不會打印出正在獲取的錯誤背部。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM