当我试图在我的网站上添加一个特别长的引用(通过PHP / HTML表单)时,我注意到没有通过MySQL查询添加更长的引号。较短的那些添加得很好。
这不是我表中列长度的问题,引号肯定短于限制(VARCHAR(600))。
当我尝试从MySQL命令行手动输入引号进入数据库时,在正确输入查询后按Enter键不会产生新的提示(而是转到查询的下一行)。查询永远不会执行。
我可以获得新提示的唯一方法是强制退出MySQL命令行并重新打开它。任何人都知道为什么会这样吗?
编辑:这是我的查询。前3个值是无关紧要的,我不会通过解释它们来混淆任何人。最后2个是来源和报价。
EDIT2 :MySQL版本为5.5.8
查询不起作用
INSERT INTO quotes VALUES(NULL, 2, 20, 'http://www.mlb.com/news/article.jsp?ymd=20091104&content_id=7620238&vkey=news_nyy&fext=.jsp&c_id=nyy', 'He's the reason we're here. First of all, we wouldn't be in this stadium if it wasn't for him. We wouldn't have this group together if it wasn't for him. It's a special moment. We all wanted to win it for him.');
可以使用的查询示例
INSERT INTO quotes VALUES(NULL, 2, 20, 'http://www.mlb.com/news/article.jsp?ymd=20091104&content_id=7620238&vkey=news_nyy&fext=.jsp&c_id=nyy', 'I guess you could say that this is the best moment of my life right now," Matsui said. "If I were to look back, yes, this would be the best.');
对于那些低调的人,请记住我的原因?
最终编辑知道了...这是因为我引用的单引号。谢谢。
答案 0 :(得分:7)
以下情况可能会导致MySQL控制台认为您尚未完成查询,还有更多要输入的内容:
\'
(单引号)或\"
(双引号)来逃避引用。确保您没有遇到这些问题,并且应该运行查询。
编辑以下海报编辑:
是的,查看您的查询,只需将'
替换为\'
,只要它位于数据项内,就需要转义引号。 PHP有一个函数可以逃脱,mysql_real_escape_string()
。您还可以使用预准备语句来防止此问题。有关详细信息,请参阅this question。
答案 1 :(得分:3)
这绝对是显而易见的,我的朋友......你在最后一个字符串中有单引号,同时将它们用作字符串边界...
答案 2 :(得分:2)
在MySQL控制台中,确保在查询末尾添加分号(;)。否则,它会对查询有更多的期望。
答案 3 :(得分:2)
你的字符串中有单引号,用单引号封装。
你应该用mysql_real_escape_string
(或类似的东西,比如PDO)来逃避你的字符串:http://php.net/manual/en/function.mysql-real-escape-string.php
答案 4 :(得分:1)
听起来你没有正确地逃避引号中的'或'字符。查找任何'或'或\字符并在它们之前加上\。
答案 5 :(得分:1)
您没有发布任何PHP代码,但您的SQL建议您省略两个基本步骤: