1

我在两个不同的服务器上运行完全相同的 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 控制台中运行查询,它运行良好,但是当我 bound_params 并根据传入的变量执行它们时,第二个查询失败。任何帮助表示赞赏!

编辑:

错误消息是:捕获 SIGTERM,正在关闭 - 我会调查的。感谢所有提供帮助的评论者!

4

1 回答 1

0

我意识到我的问题,如果有人遇到同样的事情,我将分享:

我的 Ubuntu php 没有安装 mysqldb,只是简单的 mysql(默认)。因此,“fetch_assoc()”和“get_result()”之类的函数不起作用。对于解决方法,我参考了以下帖子:

调用未定义的方法 mysqli_stmt::get_result

于 2013-08-08T20:18:48.957 回答