我嘗試插入多個記錄無PK臺如何插入無主鍵的多個記錄無脂肪框架
for ($x = 0; $x < count($arr); $x++) {
$name=$arr[$x];
$user=new DB\SQL\Mapper($f3->get('DB'),'User');
$user->name=$name;
$user->save();
}
最後,只有一條記錄插入到數據庫
我也試過reset
,但仍然只有一條記錄
for ($x = 0; $x < count($arr); $x++) {
$name=$arr[$x];
$user=new DB\SQL\Mapper($f3->get('DB'),'User');
$user->reset();
$user->name=$name;
$user->save();
}
如果我添加一個auto_increment主鍵此表中,那麼它是沒有問題的。
更新1:
我的網頁瀏覽器再次測試問題。然後我得到這個錯誤
Internal Server Error
PDOStatement: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
所以我不能save()
後執行$db->log()
,現在我知道爲什麼只有一個記錄,因爲PHP在第一循環停止。
然後啓用general_log_file
,我發現這個日誌文件
160621 18:00:53 47 Connect [email protected] on my_db
47 Query SET NAMES utf8
47 Query SHOW columns FROM `my_db`.`UserAccount`
47 Query INSERT INTO `UserAccount` (`name`) VALUES ('uName')
47 Quit
所以我嘗試運行該SQL INSERT INTO `UserAccount` (`name`) VALUES ('uName')
並沒有得到錯誤。
我也檢查了/var/log/mysql.log
和/var/log/mysql.err
是空的。
現在我不知道如何找出問題
您可以在ONERROR事件掛鉤。看到我更新的答案。 '$ user-> save()'觸發2條語句:'INSERT'和'SELECT'(重新載入新的新數據)。我懷疑'INSERT'語句順利,但後續的SELECT失敗,出於某種原因(它不應該)。順便說一句,你使用的是最新版本的框架? – xfra35
好吧,我現在明白了。你遇到了幾個月前已經修復的錯誤。新版本應該在一兩週內發佈,並將包含該補丁。然而,你可以下載最新的開發版[現在](https://github.com/bcosca/fatfree-core),這將解決你的問題。 – xfra35
'''2016年6月21日星期二10:44:41 +0000(0.1ms)SHOW my_db'.'UserAccount'; 2016年6月21日星期二10:44:41 +0000(0.1ms)INSERT INTO'UserAccount'('name')VALUES('uName2')2016年6月21日星期二10:44:41 +0000(0.1ms)SELECT'名'從'UserAccount' WHERE''',我得到了這個,現在我明白了爲什麼。它在我插入後選擇記錄,但在'''where'後面有空,所以我得到了錯誤,可能這是一個錯誤? –