SQL语句超过了PHP的最大时间,但在phpMyAdmin中立即运行

时间:2014-11-22 11:27:33

标签: php mysql sql phpmyadmin

我正在开发电子商务页面。我写了一段代码,根据他们所在的购物车从我的数据库中获取产品列表。有三个表,一个用于购物车,一个用于每个购物车中的物品,另一个列出每个购物车的详细信息。产品。会话ID存储在列出购物车的表格中。

我在php文件的一部分中编写了以下代码:

$sessionId = session_id();
$selStr = "SELECT cart_items.quantity, products.price, products.discount 
           FROM cart_items JOIN carts ON carts.id = cart_items.carts_id
           JOIN products ON cart_items.products_id = products.id
           WHERE session_id='".$sessionId."';";

$result = mysql_query($selStr);

当我在浏览器中显示此页面时,请求在服务器上超时并返回错误:

Fatal error: Maximum execution time of 30 seconds exceeded

我使用phpMyAdmin运行此SQL语句,代码运行正常。事实上,它会立即返回。此外,如果我分解SQL语句并从表中一次检索信息并单独调用MySQL,则不会发生超时。我正在编写此SQL代码以消除文件中无关的代码量。

为什么只在PHP代码中调用MySQL数据库需要更长的时间?

编辑:为了澄清这个问题,我的意思是问为什么MySQL调用不会立即在我的PHP代码中返回?有什么东西可以阻止它返回吗?可能存在安全问题?

1 个答案:

答案 0 :(得分:1)

我自己想出来了。

上面列出的代码运行正常,但预期输出中有一个奇怪的扭结。基本上,我没有通过调用从数据库中获取结果集中的下一行,所以我选择了书中最古老的技巧,即无限循环。

在调用数据库获取$ result(在我在问题中发布的代码中)之后我有一个echo线这一事实让我感到懊恼。我期待这条线出现。不幸的是,它是在浏览器中输出页面的行,所以我被欺骗认为没有到达mysql_query调用之后的echo线。

叹息。感谢任何想要帮助的人。 Muchos gracias。