0
我在使用MySQL Perl DBI時遇到了一些問題。我搜查了一次只能找到一半的答案,我不知道如何結合我所知道的才能得到正確的答案。帶有佔位符和外鍵的Perl DBI MySQL插入
我有幾個數據庫,一個是父:
mysql> desc records;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| File_Id | int(11) | NO | PRI | NULL | auto_increment |
| fname | varchar(59) | YES | | NULL | |
| type | varchar(3) | YES | | NULL | |
| n1size | int(11) | YES | | NULL | |
| downdate | date | YES | | NULL |
mysql> desc mhqc;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| MQ_Id | int(11) | NO | PRI | NULL | auto_increment |
| fieldnum | tinyint(4) | YES | | NULL | |
| result | varchar(10) | YES | | NULL | |
| File_Id | int(11) | YES | MUL | NULL | |
+----------+-------------+------+-----+---------+----------------+
記錄填充已經和我想記錄添加到mhqc。我正在搞砸我的SQL語句!
我需要插入的變量(簡單地定義爲簡單起見)是:
my @fields = (1..41); # this is for the fieldname column
my @results # 41 elements, contains results of checks performed on the fields 1-41
所以,我要循環結果/域的數目:
INSERT INTO mphqc (MQ_Id, fieldname, result, File_Id) values (NULL, ?, ? ...
...和我在這裏卡住了。我顯然需要包括某種形式的select語句像下面的一個整合實驗
SELECT File_Id from records where fname = \'$in_file';
我只是找不到怎麼辦時,雙方的file_id需要被記錄在子表。感謝您的幫助! :)
謝謝你,鮑羅廷。我開始嘗試各種隨機嵌套語句,並提出了非常相似的東西。 – emmalg
我剛剛意識到我的工作沒有正常工作,我正在File_Id列中獲取NULL my $ sql ='INSERT INTO mhqc(fieldnum,result,File_Id)values(?,?,(SELECT records.File_ID FROM記錄WHERE fname =?))';事實上,我已經編輯了與您的聲明相匹配的聲明,而且我遇到了同樣的問題。 – emmalg
@emmalg:那麼'記錄'中沒有與您的文件名相匹配的項目。你可以運行這個來檢查'print'File_Id =',$ dbh-> selectrow_array('SELECT File_Id FROM records WHERE fname =?',undef,$ in_file),「\ n」;' – Borodin