我在两个不同的服务器上运行完全相同的PHP脚本作为应用程序的Web服务。一个执行所有查询(运行5.3.15的查询),另一个(运行5.3.10)不运行某些查询。当我告诉一些要执行的查询时,它会产生服务器错误。
运行5.3.15的机器是mac os x lion机器,另一台是ubuntu 12.04。
你们有任何想法可能会出错吗?以下是两个查询示例。第一个适用于php 5.3.10,第二个不适用。
工作:
$stmt = $this->db->prepare("SELECT DISTINCT b.id
FROM a
LEFT JOIN b
ON a.item_id = v.id
INNER JOIN c
ON a.id = c.item_id
LEFT JOIN d
ON c.status_id = d.id
WHERE d.property = 1");
服务器错误:
$stmt = $this->db->prepare("SELECT a.id AS id, d.ordering AS ordering,
d.name AS name2,
a.service_id AS service_id, b.name AS name,
c.name AS name1, a.due_date AS due_date,
d.status AS status
FROM a INNER JOIN b
ON a.title_id = b.id
LEFT JOIN c
ON b.tv_show_id = c.id
LEFT JOIN d
ON a.status_id = d.id
WHERE b.provider_id = ?
AND (b.film_id= ? OR b.name
LIKE CONCAT('%', ?, '%') OR c.name
LIKE CONCAT('%', ?, '%')) LIMIT 2000");
注意:我非常对这些查询的各种批评持开放态度,但只说我很乱或需要读取sql的答案对我来说不是很有帮助。此外,数据库名称实际上不仅仅是字母,我出于安全目的更改了它们。
问题最有可能出现在所使用的函数或其他东西中,因为代码(在我通过更改所有名称快速屠杀之前)在php 5.3.15中运行完美。
如果错误没有意义,那么还有什么可能出错?我直接在mysql控制台中运行查询,它运行得很好,但是当我绑定并根据传入的变量执行它们时,第二个查询失败。任何帮助表示赞赏!!
编辑:
错误消息是: 抓住了SIGTERM,关闭了 - 我会调查一下。感谢所有帮助过的评论者!
答案 0 :(得分:0)
我意识到了我的问题,如果有人遇到同样的问题,我将分享:
我的Ubuntu php没有安装mysqldb,只是普通的mysql(默认)。因此,像“fetch_assoc()”和“get_result()”这样的函数不起作用。对于解决方法,我提到了以下帖子: