SQL работает в базе данных, но получает таймаут в php - PullRequest
1 голос
/ 22 декабря 2011

Я тестирую с этим:

$sql_teste = "SELECT COUNT(*) FROM $tbl_membro";
$result_teste = mysql_query($sql_teste);
$ln_teste = mysql_fetch_array($result_teste);

print_r("start " . $ln_teste[0] . " end");
die();

И результат был:

начало 90 конец

тогда я попробовал это:

SELECT profissao_nome, nome, contratacao_tipo_nome, codigo,
cidade_nome, estado_sigla, pais_nome, data,
postagem_descricao, membro_avatar, membro_foto, membro_foto_selecionada
FROM (

SELECT prof.nome as profissao_nome, e.razao_social as nome, ct.nome as contratacao_tipo_nome, v.codigo as codigo,
c.nome as cidade_nome, est.sigla as estado_sigla, p.nome as pais_nome, v.data_ultima_alteracao as data,
v.descricao as postagem_descricao, '' as membro_avatar, '' as membro_foto, '' as membro_foto_selecionada
FROM $tbl_vaga v
JOIN $tbl_empresa e ON v.codigo_empresa = e.codigo
JOIN $tbl_contratacao_tipo ct ON ct.codigo = v.codigo_contratacao_tipo
JOIN $tbl_endereco ende ON ende.codigo = v.codigo_endereco
LEFT JOIN $tbl_cidade c ON c.codigo = ende.codigo_cidade
LEFT JOIN $tbl_estado est ON est.codigo = c.codigo_estado
JOIN $tbl_pais p ON p.codigo = ende.codigo_pais
JOIN $tbl_profissao prof ON prof.codigo = v.codigo_profissao

UNION

SELECT '' as profissao_nome, CONCAT(u.nome,' ',u.sobrenome) as nome, '' as contratacao_tipo_nome, p.codigo as codigo,
'' as cidade_nome, '' as estado_sigla, '' as pais_nome, p.data_postagem as data,
p.descricao as postagem_descricao, m.avatar as membro_avatar, m.foto as membro_foto, m.foto_selecionada as membro_foto_selecionada
FROM $tbl_postagem p
JOIN $tbl_membro m ON m.codigo = p.codigo_membro
JOIN $tbl_usuario u ON u.codigo_membro = m.codigo

) as tab ORDER BY data DESC LIMIT 0,5

и мой результат был пуст.

Когда я положил:

print_r ($ sql_teste); и поместил код в мою базу данных, я получил правильный результат

Отображение строк 0 - 4 (всего 5, запрос занял 0,0067 с)

the print_r:

    SELECT profissao_nome, nome, contratacao_tipo_nome, codigo,
cidade_nome, estado_sigla, pais_nome, data,
postagem_descricao, membro_avatar, membro_foto, membro_foto_selecionada
FROM (

SELECT prof.nome as profissao_nome, e.razao_social as nome, ct.nome as contratacao_tipo_nome, v.codigo as codigo,
c.nome as cidade_nome, est.sigla as estado_sigla, p.nome as pais_nome, v.data_ultima_alteracao as data,
v.descricao as postagem_descricao, '' as membro_avatar, '' as membro_foto, '' as membro_foto_selecionada
FROM vaga v
JOIN empresa e ON v.codigo_empresa = e.codigo
JOIN contratacao_tipo ct ON ct.codigo = v.codigo_contratacao_tipo
JOIN endereco ende ON ende.codigo = v.codigo_endereco
LEFT JOIN cidade c ON c.codigo = ende.codigo_cidade
LEFT JOIN estado est ON est.codigo = c.codigo_estado
JOIN pais p ON p.codigo = ende.codigo_pais
JOIN profissao prof ON prof.codigo = v.codigo_profissao

UNION

SELECT '' as profissao_nome, CONCAT(u.nome,' ',u.sobrenome) as nome, '' as contratacao_tipo_nome, p.codigo as codigo,
'' as cidade_nome, '' as estado_sigla, '' as pais_nome, p.data_postagem as data,
p.descricao as postagem_descricao, m.avatar as membro_avatar, m.foto as membro_foto, m.foto_selecionada as membro_foto_selecionada
FROM postagem p
JOIN membro m ON m.codigo = p.codigo_membro
JOIN usuario u ON u.codigo_membro = m.codigo

) as tab ORDER BY data DESC LIMIT 0,5

Мое предположение: тайм-аут. но я не понимаю, ПОЧЕМУ. это заняло всего 0,0067 с

1 Ответ

1 голос
/ 22 декабря 2011

Не знаю, почему у вас проблема, но вы должны увидеть сообщение об ошибке. Чтобы увидеть ошибки в запросе, сделайте следующее:

$sql_teste = "SELECT COUNT(*) FROM $tbl_membro";
$result_teste = mysql_query($sql_teste);

// check for error
if (!$result_teste) {
    $message  = 'Invalid query: ' . mysql_error() . "\n"; // error message
    $message .= 'Whole query: ' . $sql_teste;
    die($message);
}

$ln_teste = mysql_fetch_array($result_teste);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...