2012-07-15 31 views
0

我是一名學習PHP的新手,這裏有一個奇怪的問題。我創建了一個名爲order的表,它只有一列:一個int(1)(主鍵,自動增量)(它有更多的列之前,我已經改變了結構,但這會是一個問題?)無法在Mysql中插入數據,除非更改表名

當我嘗試使用插入數據:

$db=mysql_connect('localhost','root',''); 
mysql_select_db('workroom',$db); 
$sql = "insert into abc values (null)"; 
mysql_query($sql,$db); 

什麼都沒有發生的分貝。

但是,當我將表名「order」更改爲「abc」(或任何其他名稱,並更新$ sql)時,插入函數將起作用。

任何人都可以幫助我嗎?非常感謝。再次

感謝,

肖恩

+4

['ORDER'](http://dev.mysql.com/doc/refman/4.1/en /reserved-words.html)是一個保留字。儘量不要在表名和字段中使用保留字;如果使用了,你必須在單詞周圍添加刻度以「逃避」它。你也不應該使用'mysql_'類函數,而應該使用'mysqli_'或PDO,並且你應該[閱讀錯誤](http://www.php.net/manual/en/mysqli.error.php)if它們發生。 – 2012-07-15 14:55:02

+0

謝謝賈裏德,這是非常有幫助的,我還沒有意識到反向詞,應該更加小心.. – seanl 2012-07-15 15:04:39

+0

你應該把這個問題標記爲回答。嘗試並跟上這一點。 – Throdne 2012-07-31 03:17:17

回答

2

我還是很新的PHP,但我相信爲了是MySQL的命令。所以,爲了避免這個錯誤,你需要在你的TableName周圍包含「或更改你的表名。

這可能適合你。

$sql = "INSERT INTO `TableName` (value1, value2, value3) VALUES ('value1', 'value2', 'value3')"; 

僅供參考,``鍵在鍵盤上方的「標籤」鍵上方。

1

而不是使用簡單的「命令」,你必須使用你想用這樣的MySQL將它識別爲一個表,並保留字的表背蜱:

$sql = "INSERT INTO `order` VALUES..."; 
0

不使用表名爲了,因爲它是保留word.If要使用順序,那麼你可以簡單地添加引號``

$sql = "INSERT INTO `order` values(Your data);