SQL在数据库中工作,但在php中超时

发布于 2024-12-22 12:37:15 字数 3367 浏览 2 评论 0原文

我用这个进行测试:

$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 秒)

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 秒

I test with this:

$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();

And the result was:

start 90 end

then i tried this one:

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

and my result was empty.

When i put:

print_r($sql_teste); and put the code in my database, i got my result just right

Showing rows 0 - 4 (5 total, Query took 0.0067 sec)

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

My guess: timeout. but i don't understand WHY. it took only 0.0067 sec

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

赠意 2024-12-29 12:37:15

不确定为什么会出现问题,但您应该能够看到错误消息。要查看查询错误,请执行以下操作:

$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);

Not sure why you have a problem but you should be able to see the error message. To see errors on a query do the following :

$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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文