【问题标题】:Most bizarre PHP/ MySQL bug最奇怪的 PHP/MySQL 错误
【发布时间】:2011-01-15 00:19:58
【问题描述】:

我有一个搜索页面,它获取您搜索的内容(通过 POST),然后将其插入表格中。我让它通过电子邮件将查询发送给我,这样我就可以看到发生了什么:

获取变量的我的 PHP:

$searched = mysql_real_escape_string($_POST['searched']);

使用它的查询(通过电子邮件发送给我):

INSERT INTO conversations (viID, moID, viTyping, moTyping, priority, status, open, mOpen, lastMsgID, searched) VALUES (435, 0, 0, 0, 0, 0, 1, 1, 0, "

这是组装查询的代码:

$query = "INSERT INTO conversations (viID, moID, viTyping, moTyping, priority, status, open, mOpen, lastMsgID, searched) VALUES ($userID, 0, 0, 0, 0, 0, 1, 1, 0, \"$searched\")";

每当页面从 IE 运行时,这会将记录插入数据库中就可以了。任何其他浏览器都省略了“question8”部分(它仍然插入一条记录),即使查询完全相同!我可以在 phpMyAdmin 中剪切和粘贴查询,它运行得很好。

为什么这只适用于 IE?其他浏览器是否插入了一些我看不到的特殊字符?我迷路了!

【问题讨论】:

  • 我们能看到组装查询的代码吗?
  • 浏览器应该是无关紧要的(除非它与 $_POST 变量有关),因为它都是服务器端的 - 请您发布出现在您的 PHP 文件中的代码吗?
  • 转储$_POST 的内容,看看里面有什么。确保你也逃避你的查询。

标签: php mysql


【解决方案1】:

请确保在 PHP 设置中关闭“Magic Quotes”。如何禁用它在here进行了解释。

(我从here复制/粘贴完全相同的答案)。

【讨论】:

    【解决方案2】:

    您的 HTML 或搜索页面上使用的 javascript 中可能有问题或浏览器特定的问题。

    【讨论】:

      【解决方案3】:

      能否让我知道这是否可行($db_con 指的是您的 MySQL 连接资源);

      $searched = mysql_real_escape_string($_POST['searched'], $db_con);
      
      $query = "INSERT INTO conversations (viID, moID, viTyping, moTyping, priority, status, open, mOpen, lastMsgID, searched) VALUES ('".$userID."', 0, 0, 0, 0, 0, 1, 1, 0, '".$searched."')";
      

      【讨论】:

      • 您能否编辑您的帖子以包含所有相关代码 - 包括 $userID 的声明?谢谢:)
      猜你喜欢
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-03
      • 2011-05-17
      • 1970-01-01
      • 2016-05-28
      相关资源
      最近更新 更多