2011-04-18 65 views
0

請注意,我是一個相對的新手,並遇到了一個問題,用書來學習PHP和Mysql。MySQL - 凍結當我嘗試INSERT INTO

在名爲「拉鍊」與名爲一個現有的表的數據庫「zip_codes,」我添加了一個表在MySQL使用此代碼成功地命名存儲

CREATE TABLE stores ( 
    store_id SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT, 
    name VARCHAR(60) NOT NULL, 
    address1 VARCHAR(100) NOT NULL, 
    address2 VARCHAR(100) default NULL, 
    zip_code INT(5) UNSIGNED ZEROFILL NOT NULL, 
    phone VARCHAR(15) NOT NULL, 
    PRIMARY KEY (store_id), 
    KEY (zip_code) 
    ); 

然後,我插入15個左右的行數據在桌子下面,但在我嘗試過的無數次時,它似乎只是凍結了一些東西。例如,而不是給我通常的行受影響的輸出,命令行只顯示'>,我無法再輸入SQL,甚至不能退出。

因此,我手動關閉命令行並重新打開它,並嘗試相同的結果相同的事情。爲了變化,我也嘗試輸入一行數據(15的intead),但得到了相同的結果。

有誰知道發生了什麼事?

INSERT INTO stores (name, address1, address2, zip_code, phone) VALUES 
(‘Ray''s Shop', ‘49 Main Street', NULL, ‘63939', ‘(123) 456-7890'), 
(‘Little Lulu''s', ‘12904 Rockville Pike', ‘#310', ‘10580', ‘(123) 654- 7890'), 
(‘The Store Store', ‘8200 Leesburg Pike', NULL, ‘02461', ‘(123) 456- 8989'), 
(‘Smart Shop', ‘9 Commercial Way', NULL, ‘02141', ‘(123) 555-7890'), 
(‘Megastore', ‘34 Suburban View', NULL, ‘31066', ‘(555) 456-7890'), 
(‘Chain Chain Chain', ‘8th & Eastwood', NULL, ‘80726', ‘(123) 808-7890'), 
(‘Kiosk', ‘St. Charles Towncenter', ‘3890 Crain Highway', ‘63384', ‘(123) 888-4444'), 
(‘Another Place', ‘1600 Pennsylvania Avenue', NULL, ‘05491', ‘(111) 456- 7890'), 
(‘Fishmonger''s Heaven', ‘Pier 9', NULL, ‘53571', ‘(123) 000-7890'), 
(‘Hoo New', ‘576b Little River Turnpike', NULL, ‘08098', ‘(123) 456-0000'), 
(‘Vamps ‘'R'' Us', ‘Our Location', ‘Atwood Mall', ‘02062', ‘(222) 456- 7890'), 
(‘Five and Dime', ‘9 Constitution Avenue', NULL, ‘73503', ‘(123) 446- 7890'), 
(‘A & P', ‘890 North Broadway', NULL, ‘85329', ‘(123) 456-2323'), 
(‘Spend Money Here', ‘1209 Columbia Pike', NULL, ‘10583', ‘(321) 456- 7890'); 
+0

格式的插入正常。這裏有很多引號錯誤。 – Emmerman 2011-04-18 14:20:36

+0

@Emmerman謝謝,你能給我一個格式錯誤的例子嗎? – Leahcim 2011-04-18 14:27:18

+0

轉義您的所有值http://dev.mysql.com/doc/refman/5.0/zh/string-syntax.html – Emmerman 2011-04-18 14:29:05

回答

1

問題似乎與您的引號 - 它們不匹配。您應該將字符串放在單引號'或雙引號"(相同的開始和結束標記)中。

INSERT INTO stores (name, address1, address2, zip_code, phone) VALUES 
("Ray's Shop", '49 Main Street', NULL, '63939', '(123) 456-7890'); 

...等等。

mysql命令行上的>提示表示它正在等待進一步輸入。在實踐中,我發現這通常發生在我省略結尾分號時。然而,如果口譯員認爲你正在輸入一個字符串,它會假設你的分號是該字符串的一部分,並且很高興地等待你完成。

+0

我只在每個條目中看到單引號。他們怎麼不匹配?你可以給我一個例子嗎。謝謝。 – Leahcim 2011-04-18 14:28:03

+0

你正在打開一些彎曲的開引號字符,並用ASCII單引號'''結束。他們是不同的人物。 – eaj 2011-04-18 14:31:15

+0

謝謝。有效。你是否在Ray's Shop周圍放了雙引號「」,因爲它裏面有一個撇號? – Leahcim 2011-04-18 14:32:10

0

我試過你在phpmyadmin的代碼,那裏有一些錯誤。試試這個:

INSERT INTO `stores` (`store_id`, `name`, `address1`, `address2`, `zip_code`, `phone`) 
VALUES (NULL, "Ray's Shop", '49 Main Street', NULL, '63939', '(123) 456-7890'); 
+0

我嘗試了您的示例時遇到錯誤。你有沒有看到任何問題?你的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在'NSERT INTO'stores'附近使用正確的語法(第1行處的'store_id','name','address1','address2','zip_code','ph' – Leahcim 2011-04-18 14:30:49

+0

這很奇怪,它適用於我。請嘗試使用上面的代碼與_「Ray's Shop」_。 – s7anley 2011-04-18 14:34:21

+2

它不應該工作。反引號字符僅用於劃分表和字段名稱,並且很少需要。文字字符串應該用單引號或雙引號分隔。 – eaj 2011-04-18 14:35:26

1

使用mysql_real_escape_string()功能就像下面的例子

$query = sprintf("INSERT INTO product_description (language_id,name) VALUES ('1','%s') ",mysql_real_escape_string($product_name)); 
mysql_query($query) or die(mysql_error());