MySQL - 当我尝试INSERT INTO时冻结

时间:2011-04-18 14:17:47

标签: mysql

注意,我是一个相对新手,并使用一本书来学习PHP和Mysql遇到了问题。

在名为“zips”的数据库中,有一个名为“zip_codes”的现有表,我使用此代码在mysql中成功添加了一个名为stores的表

 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的整数)但得到了相同的结果。

有谁知道发生了什么?

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');

3 个答案:

答案 0 :(得分:1)

问题似乎与您的引号有关 - 它们不匹配。您应该将字符串放在单引号'或双引号"中(相同的开始和结束标记)。

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

......等等。

mysql命令行上的>提示符表明它正在等待进一步的输入。在实践中,我发现这通常发生在我省略结尾分号时。但是,如果解释器认为你正在输入一个字符串,那么它将假设你的分号是该字符串的一部分,并且很高兴等你完成。

答案 1 :(得分: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());

答案 2 :(得分: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');