2012-08-02 77 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