2011-12-22 17 views
1

超時我用這個測試:SQL工作在數據庫中,但得到的PHP

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

,結果是:

start 90 end

那麼我想這一個:

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);並把代碼在我的數據庫,我得到了我的結果正好

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

中的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秒

+0

您是否嘗試過我的建議 - 您得到了哪些錯誤? – ManseUK 2011-12-23 14:55:20

+0

在我的本地主機這個SQL仍然無法正常工作,但在服務器上工作。 (確定工作應該在哪裏工作,但爲什麼不能在我的本地主機上工作?) – 2012-01-23 13:35:02

回答

1

不知道爲什麼你有問題,但你應該能夠看到錯誤信息。要查看查詢上的錯誤,請執行以下操作:

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

對不起,在沒有你的情況下需要這麼長時間,我正在處理其他問題。我忘記把mysql_error()結果放在我的問題中,我對此感到抱歉。這裏有以下錯誤:'無效查詢:在查詢期間丟失與MySQL服務器的連接'這就是爲什麼我認爲這是一個超時問題。我做了相同的查詢(沒有'UNION',彼此做了2個查詢,結果是好的)。 PS:使用的查詢是問題一。 PS2:用你的例子:'無效查詢:整個查詢:SELECT COUNT(*)FROM membro'這意味着查詢是好的(我刪除了如果顯示結果空白)。任何意識? – 2011-12-23 17:07:42

相關問題