2012-08-02 20 views
4

我有一個非常奇怪的問題,插入值到我的MySQL數據庫,使用php,所以我正在運行測試,最簡單的插入;以下不工作:數據沒有插入到mysql數據庫中,因爲引用不同

<?php 
include("config.php"); // put the *FULL* path to the file. 

mysql_query("INSERT INTO 'lms'.'test2' ('trn') VALUES ('17')"); 

?> 

不過了以下工作:(注意單引號的區別)

<?php 
include("config.php"); // put the *FULL* path to the file. 

mysql_query("INSERT INTO `lms`.`test2` (`trn`) VALUES ('17')"); 

?> 

我實在看不出有什麼問題,我能得到和幫助,請

+3

在MySQL中,你不能使用'''包圍表和專欄的名字。正確的字符是'\''。另一方面,對於字符串,正確的是'''。 – Adi 2012-08-02 12:11:08

+0

'mysql_'已被棄用。請改用MySQLi或PDO。這是一篇關於該主題的文章,http://anuary.com/54/input-sanitization-and-escaping-for-database-and-stdout-using-php。 – Gajus 2012-08-02 12:30:52

回答

3

您不需要在查詢中封裝表格,除非它們有空格或保留字。

INSERT INTO 'lms'.'test2' ('trn') VALUES ('17') 
// This makes no real sense to the db. It should be: 
INSERT INTO lms.test2 (trn) VALUES ('17') 

如果列TRN接受數字,它真的應該是:

INSERT INTO lms.test2 (trn) VALUES (17) 

的MySQL,你可以使用傾斜報價字符封裝名稱,但不是字符串。要在查詢中輸入字符串,您必須使用普通引號,如'

你可以這樣:

select `someTable`.`someColumn` from `someTable` 

但不是這樣的:

select someTable.someColumn from someTable where myName=`Tommy`; 

正確的使用將是:

select someTable.someColumn from someTable where myName='Tommy'; 
+1

添加了兩個你錯過的反引號。 – 2012-08-02 12:26:21

+0

@ypercube感謝隊友,現在非常醉心,所以反引號,單引號和空格看起來都一樣:) – Fluffeh 2012-08-02 12:29:11