2012-03-01 46 views
0

我无法得到这个编译正确。使用PHP插入到MySQL数据库的某些领域

$username = mysql_real_escape_string($_GET['username']); 
$about = mysql_reaL_escape_string($_GET['about']); 
$icebreaker = mysql_reaL_escape_string($_GET['icebreaker']); 


$query = "UPDATE '$mysql_database'.main SET about = '$about', icebreaker = '$icebreaker' WHERE username = '$username';"; 

我得到的错误

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 ''a4396957_users'.main 
SET about = 'testing', icebreaker = 'ice' WHERE us' at line 1 

有缺这个说法?

回答

3

不撇号,其名称引用数据库名称或引用

$query = "UPDATE `$mysql_database`.`main` SET `about` = '$about', `icebreaker` = '$icebreaker' WHERE `username` = '$username';"; 

使用'而不是'

2
$query = "UPDATE $mysql_database.main SET about = '$about', icebreaker = '$icebreaker' WHERE username = '$username';"; 

内的MySQL某些对象,包括数据库,表,索引,列,别名,视图,存储过程,分区,并且已知作为标识符的其它对象名称..

标识符引号字符是反引号(“`”)..

如果启用了ANSI_QUOTES SQL模式,它也允许双引号内引用标识符:

mysql> CREATE TABLE "test" (col INT); 
ERROR 1064: You have an error in your SQL syntax... 

mysql> SET sql_mode='ANSI_QUOTES'; 
mysql> CREATE TABLE "test" (col INT); 
Query OK, 0 rows affected (0.00 sec) 
+0

他们应该然而逃脱,只是不能与撇号,否则列'锁定“或”订单“可能会导致一些问题 – Moak 2012-03-01 17:48:41

+0

好,好的编辑;) – Moak 2012-03-01 17:58:32