SQL查询适用于测试服务器但不能实时...可能有什么区别?

时间:2009-05-21 17:27:31

标签: php sql mysql mysqli

解决: 我在本地服务器上编写并测试了一个PHP脚本。 (没有什么花哨的,在同一个数据库中只有2个连续的SQL插入,但是不同的表)。

两台服务器都运行PHP5& MYSQL 5.

在本地服务器上,两个查询都已正确处理。

在实时服务器上,只有第一个查询有效,但第二个查询无效,我无法弄清楚原因。

以下是代码:

    $sql_login = "INSERT INTO logintbl 
              (...) 
           VALUES (...)";
   $result_login = mysqli_query($this->connect, $sql_login);

   # Fill contact details
   $sql_contactD = "INSERT INTO contactDetails
                    (...)
         VALUES (...)";
   $result_contactD = mysqli_query($this->connect, $sql_contactD);

在我的本地服务器上,两个查询都返回true,数据将添加到数据库中。

在我的实时服务器上,第一个查询按预期工作,但第二个查询失败,没有任何错误消息。

当然,两个服务器上的表结构都是相同的。两个表都在同一个数据库中,并且用户对数据库拥有足够的权限。

任何可能出错的线索?


编辑1:权限:是的,用户对两个表都有足够的权限。


编辑2:我感觉非常愚蠢,但是按照James的建议检查mysqli_error(),我发现生产服务器在表名方面区分大小写,不像我的测试服务器,并且它转换了原始服务器我的表名(contactDetails)为小写(contactdetails)。

感谢大家的帮助。

3 个答案:

答案 0 :(得分:0)

您是否在生产环境中检查了权限?意思是你确认你有对contactDetails的插入访问权限吗?

答案 1 :(得分:0)

您是否尝试将$ sql_contactD打印到屏幕(或网页),然后在MySQL查询浏览器中运行完全相同的查询?

答案 2 :(得分:0)

回答我自己的问题,因为它看起来是正确关闭它的唯一方法:

  

我感觉很傻,但跟着   詹姆斯的检查建议   mysqli_error(),我发现了   生产服务器区分大小写   关于表名,不像我的   测试服务器,它转换了   我桌子的原名   (contactDetails)为小写   (contactdetails)。