2011-04-14 105 views
1

我想寫信息到一個數據庫表,它不工作。我一直在搞這個小時。也許如果有人看着代碼,他們會看到我錯過的東西。INSERT INTO不寫入數據庫?

我的邏輯是它連接到數據庫服務器,打開數據庫mydb,進入表mod,並寫入id,fname和lname,然後關閉連接。

此外,id被設置爲auto_increment。從我能告訴它應該工作,但它不。

$con = mysql_connect("localhost","user","pass"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db('mydb', $con); 

//assign 
$query = "INSERT INTO 'mod' (id, fname, lname) VALUES ('', 'bill', 'smith')"; 
if (!$query){ 
dir ("Unable to create the record:" . mysql_error()); 
exit; 
} 
mysql_query($query); 
mysql_close($con); 
+0

你是否需要''''around mod? – tom502 2011-04-14 16:04:18

+0

很明顯你已經搞混了=)if(!$ query)正在檢查字符串值爲false。 mysql_query的位置與if語句相比有點晚。 – 2011-04-14 16:06:12

回答

0

你在引用表名時做錯了。它應該是`mod`而不是'mod'。即`[backtick]不是'[單引號]。

和第二個錯誤是與模具聲明...而不是DIR應該死了....

INSERT INTO `mod` (id, fname, lname) VALUES ('', 'bill', 'smith'); 

接下來,您也可以跳過插入的id字段值是autoincreament

所以它可以是

INSERT INTO `mod` (fname, lname) VALUES ('bill', 'smith'); 
+0

這是我的問題來實現。非常感謝您的意見! – john 2011-04-14 16:21:37

1

應該有圍繞「國防部」

//編輯暫無報價:
此外,因爲它正在檢查字符串,而不是結果的if (!query)部分不是在那一刻真的很有用。你應該檢查mysql_query()的結果,如果失敗了,你應該輸出一個錯誤信息。

+0

沒有工作。 :( – john 2011-04-14 16:06:51

+0

任何錯誤?在mysql_query()' – gnur 2011-04-14 16:09:01

1

查詢更改爲:

$query = "INSERT INTO mod (fname, lname) VALUES ('bill', 'smith')"; 

你的自動遞增ID將由數據庫自動添加。

UPDATE

你的錯誤代碼應該是這樣工作的:

$query = "INSERT INTO mod (fname, lname) VALUES ('bill', 'smith')"; 
$result = mysql_query($query); 
if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 
0

你確實有叫mysql_query執行查詢(見mysql_error)。

+0

不是我所做的事情之後嘗試'echo mysql_error()'mysql_query($ query); – john 2011-04-14 16:05:50

+0

請參閱下面的答案@gnur – Jon 2011-04-14 16:06:39

+0

執行查詢後, if(!$ query)check然後輸出mysql_error()。當你執行if(!$ query)時,$ query變量仍然是一個字符串,並且總是會評估爲true,並且你拼錯'die' dir'... – rATRIJS 2011-04-14 16:10:04

0

您也可以嘗試:

$query = "INSERT INTO mod SET fname='bill', lname='smith'"; 

而且id列將神奇地自動遞增。

+0

是的,這也可以通過使用'(fname,lname)VALUES('bill','smith')' – gnur 2011-04-14 16:07:34