MySQL Query太大了?导致无响应的控制台

时间:2011-06-21 15:54:41

标签: php mysql html

当我试图在我的网站上添加一个特别长的引用(通过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.');

对于那些低调的人,请记住我的原因?

最终编辑知道了...这是因为我引用的单引号。谢谢。

6 个答案:

答案 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建议您省略两个基本步骤:

  1. 使用预准备语句将数据注入查询(或正确的转义函数)
  2. 测试数据库调用的结果以及打印/日志错误消息。