MySQL-尝试插入时冻结
请注意,我是一个相对新手,在学习PHP和Mysql时遇到了一个问题 在一个名为“zips”的数据库中,有一个名为“zip_code”的表,我使用此代码在mysql中成功地添加了一个名为stores的表MySQL-尝试插入时冻结,mysql,Mysql,请注意,我是一个相对新手,在学习PHP和Mysql时遇到了一个问题 在一个名为“zips”的数据库中,有一个名为“zip_code”的表,我使用此代码在mysql中成功地添加了一个名为stores的表 CREATE TABLE stores ( store_id SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(60) NOT NULL, address1 VARCHAR(100) NOT NUL
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');
问题似乎出在你的引号上——它们不匹配。您应该将字符串放在单引号
“
或双引号”
(相同的开始和结束标记)中
…等等
mysql命令行上的
提示表明它正在等待进一步的输入。实际上,我发现当我省略结尾分号时通常会发生这种情况。但是,如果解释器认为您正在输入字符串,它会假定您的分号是该字符串的一部分,并愉快地等待您完成。我在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');
使用如下示例所示的函数
$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());
正确设置插入的格式。这里有很多引号错误。@埃默曼谢谢,你能给我一个格式错误的例子吗?转义所有的值我在每个条目周围只看到单引号。它们怎么不匹配?你能给我一个例子吗?谢谢。你是用某种曲线的开引号字符开始的,用ASCII单引号结束的
“
。它们是不同的字符。谢谢。它起作用了。你用双引号了吗?”“在Ray的商店附近,因为里面有一个撇号?是的,虽然你的方式也很好:'Ray's Shop'
,但是为什么你的行得通,而我的前两行不行呢?”。我看不出还有什么区别吗?我试过你的例子时出错了。你觉得有什么问题吗?您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在存储中使用的正确语法(存储id
,名称
,地址1
,地址2
,邮政编码
,邮政编码
,第1行的'ph'奇怪的是,它对我有效。尝试将上面的代码与“Ray's Shop”一起使用。它不应该起作用。反引号字符仅用于分隔表名和字段名,很少需要。文字字符串应该用单引号分隔。
“或双引号分隔。感谢您的澄清,但它在我的本地主机中起作用。我使用的是WampServer 2.1版附带的mysql5.1.53。
$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());