2013-06-26 64 views
2

我動態形成PHP的MySQL語句和想不通,爲什麼這個人是無法執行:INSERT INTO MySQL的聲明未能

INSERT INTO users (`email`, `password`, `first_name`, `last_name`, `url`, 
    `description`, `media`, `tags`, `zip`, `country`, `lat`, `lon`, `city`, `state`, 
    `datetime_joined`, `API_key`, `verified`, `likes`, `email_confirmation_code`, 
    `email_confirmed`) VALUES ('[email protected]', 
    'f1e5aeb519396a87bd2a90e6a680d18713b1ecbe', 'Brannon', 'Dorsey', 
    'brannondorsey.com', 'description', 'sculpture, photography, creative code', 
    'saic, chicago, richmond, young arts', '60601', 'us', '41.8858', '-87.6181', 
    'Chicago', 'Illinois', '2013-06-26T23:50:29+0200', 
    '7e852a3e97257b563ffbb879d764ce56110ccb70', '0', 
    '0','c35bad0dc9b058addbf47eef8dda2b124528751e', '0') 

我檢查,我列的拼寫和格式要插入以及表名稱,一切都是正確的。有人知道會發生什麼嗎?我不想爲其他人忙碌的工作,我只是無法弄清楚這裏發生了什麼。

謝謝!

UPDATE:

這裏是我創造了我的表聲明:

CREATE TABLE users (
    id mediumint(8) unsigned NOT NULL auto_increment, 
    email varchar(255) default NULL, 
    password varchar(255), 
    url TEXT default NULL, 
    description TEXT default NULL, 
    city varchar(255), 
    state TEXT default NULL, 
    country varchar(100) default NULL, 
    zip varchar(10) default NULL, 
    datetime_joined varchar(255), 
    media varchar(255) default NULL, 
    tags varchar(255) default NULL, 
    API_key varchar(255), 
    verified mediumint default NULL, 
    first_name varchar(255) default NULL, 
    last_name varchar(255) default NULL, 
    API_hits mediumint default NULL, 
    API_hit_date varchar(255), 
    likes mediumint default NULL, 
    lat varchar(30) default NULL, 
    lon varchar(30) default NULL, 
    email_confirmation_code varchar(255), 
    email_confirmed mediumint default NULL, 
    PRIMARY KEY (id), 
    FULLTEXT(`first_name`, `last_name`, `email`, `url`, `description`, `media`, `tags`, `city`, `state`, `country`) 
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; 

我試圖去除所有號碼的單引號,但沒有奏效。此外,最奇怪的是,當我呼應失敗的查詢到瀏覽器,然後複製&將其粘貼到PhpMyAdmin的SQL輸入框行插入...任何想法?

UPDATE:

self::$mysqli->error說: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 '\'[email protected]\', \'f1e5aeb519396a87bd2a90e6a680d18713b1ecbe\', \'B' at line 1

UPDATE:見下面的回答......我不能回答我的問題了兩天。感謝大家。

+1

請問實際的錯誤文字是什麼? – PaulProgrammer

+0

如果'self :: $ mysqli-> query($ query)'返回'false',我只是迴應「MYSQL QUERY FAILED」。有沒有更好的具體方式來錯誤報告這一點? – Brannon

+0

是的。查看[mysqli :: $ error]的文檔(http://www.php.net/manual/en/mysqli.error.php) – PaulProgrammer

回答

3

我挖掘了我所做的動態構建查詢的所有字符串操作,並發現我使用real_escape_string作爲查詢的一部分,而不僅僅是查看值。這就解釋了爲什麼從瀏覽器中複製查詢的原因。

1

不確定,但你的緯度和長度插入爲字符串,請嘗試刪除引號並將它們作爲數字插入。所有你的數字領域。

+0

剛做過但仍未執行。我將用我的表格模式進行更新。 – Brannon

0

據我所知,您的列和值是匹配的,但除非您向我們展示用於創建表的語句,否則我無法確定它適合您的模式。查看創建此查詢的PHP也會很有幫助。如果在我們看不到的地方出現了不匹配的情況,我不會感到驚訝,而且你只是忽略了(不能怪你;對你自己的代碼很容易做到)。

除了將這些添加到代碼位之外,我還有另一種可能的解釋:根據你的sql實現的挑剔程度,可能是你的陳述後缺少;

+0

我剛剛在查詢結尾處添加了一個';',但這不起作用。我會嘗試其餘的。我覺得這很奇怪,但是如果我複製並將查詢粘貼到phpmyadmin中,它會正確執行。 – Brannon