Query Boolean error

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

Это db-соединение:

$dbwebwinkel = mysql_connect("localhost", "abcdef", "123456") or die(mysql_error()); 
$db1 =mysql_select_db('abcdef', $dbwebwinkel) or die(mysql_error());

Это сообщение об ошибке:

В поисковом запросе есть что-то не так ( SELECT.idproduct IS NULL ИЛИ producten.idproduct IS NULL)

У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса, который можно использовать рядом с 'OUTER JOIN producten ON producten.idproduct=prod_omschrijving.idproduct W' в строке 8

Предупреждение: mysql_fetch_array() ожидает, что параметр 1 будет ресурсом, логическое значение указано в /home/s010485/domains/jcsl.nl/public_html/medewerkers/paginas/boekingen/producten.php в строке 61

Это сценарий.

$qry = "
SELECT
    prod_omschrijving.producttitel,
    prod_omschrijving.idproduct AS 'idproductom',
    producten.idproduct AS 'idproductprod',
    producten.productlink
 FROM
    prod_omschrijving
 FULL OUTER JOIN 
    producten 
 ON 
    producten.idproduct=prod_omschrijving.idproduct
 WHERE
    prod_omschrijving.idproduct IS NULL
 OR
    producten.idproduct IS NULL";

$sql = mysql_query($qry, $dbwebwinkel);
$sql = mysql_query($qry, $dbwebwinkel);
if($sql === false)
{
    echo (" Er gaat iets mis in de zoekquery (".$qry .")".mysql_error($dbwebwinkel));
}
else
{
    WHILE ($lijstje = mysql_fetch_array($sql))
    {
        echo $lijstje['idproductom'];
    }
}

1 ответ

Решение

Вы можете делать то, что вы хотите с union all и два внешних соединения:

SELECT o.producttitel, o.idproduct AS idproductom,
       p.idproduct AS idproductprod, p.productlink
FROM prod_omschrijving o LEFT OUTER JOIN 
     producten p
     ON p.idproduct = o.idproduct
WHERE p.idproduct IS NULL
UNION ALL
SELECT o.producttitel, o.idproduct AS idproductom,
       p.idproduct AS idproductprod, p.productlink
FROM prod_omschrijving o RIGHT OUTER JOIN 
     producten p
     ON p.idproduct = o.idproduct
WHERE o.idproduct IS NULL;

Я добавил псевдонимы таблиц, чтобы сделать запрос более читабельным.

Другие вопросы по тегам