MySQL двойной запрос ситуации - PullRequest
0 голосов
/ 13 мая 2009

Есть ли другой способ сделать этот запрос?

 $query = "SELECT * FROM produto, pt WHERE
        produto.refPT = pt.ref AND
        produto.refPT IN (SELECT idProduto FROM amb_prod WHERE idAmbiente='1');";
    $result_set = mysql_query($query);

Проблема в том, что у моего локального хоста есть сообщество MySQL версии 5.1.30, но на моем онлайн-сервере установлена ​​версия MySQL сообщества 5.0.67.

И я думаю, что причина, по которой я получаю эту ошибку только при попытке запуска на онлайн-сервере:

mysql_fetch_array(): supplied argument is not a valid MySQL result resource 

Ответы [ 4 ]

1 голос
/ 13 мая 2009

Упрощается, когда вы создаете красивый вид вашего запроса, например:

$query = "SELECT *
          FROM produto, pt, amb_prod 
          WHERE produto.refPT = pt.ref
          AND produto.refPT = amb_prod.idProduto 
          WHERE amb_prod.idAmbiente='1';";
$result_set = mysql_query($query);
0 голосов
/ 13 мая 2009

Избавьтесь от точки с запятой в конце и посмотрите, поможет ли это.

В некоторых реализациях моста (то, что связывает ваш язык с сервером MySQL), ваша строка запроса фактически состоит из двух запросов:

SELECT * 
FROM produto, pt 
WHERE
 produto.refPT = pt.ref AND
 produto.refPT IN (SELECT idProduto 
                   FROM amb_prod 
                   WHERE idAmbiente='1')

И ...

[Blank]

Некоторые мосты могут запутаться как из-за того, какой набор результатов вернуть (результат SQL или пустой запрос), так и из-за того, является ли пустой запрос приемлемым или нет.

0 голосов
/ 13 мая 2009

По крайней мере, чтобы упростить ваш запрос, вы можете использовать:

"Select * from produto,pt,amb_prod WHERE
       produto.refPT = pt.ref AND
       produto.refPT=amb_prod.idproduto AND
       amb_prod.idAmbiente='1';"

Хотя я бы рекомендовал выбирать поля, а не "*". Мне также интересно, почему вы цитируете «1», это не числовое поле?

0 голосов
/ 13 мая 2009

хорошо, было бы разумно установить подходящую версию MySQL в ваших тестовых системах, чтобы вы могли легче отладить ошибку.

Вы также можете попробовать что-то вроде этого ...

$query = "SELECT * FROM produto, pt, amb_prod WHERE
    produto.refPT = pt.ref AND
    produto.refPT = amb_prod.idProduto WHERE amb_prod.idAmbiente='1');";
$result_set = mysql_query($query);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...