Ошибка скрипта, пишет неверный SQL запрос..

ANkn

Новичок
Привет ребят, не выполняется скрип, и тем самым не заполняется таблица в БД. Ошибка - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near - и вот кусок кода, который судя по всему не с тем синтаксисом. Вопрос, как правильно его отредактировать для работы? Спасибо


Вот проблемный кусок
Код:
$wpdb->query("TRUNCATE TABLE `{$wpdb->prefix}emetal_calc`");
            $wpdb->query("           
INSERT INTO `{$wpdb->prefix}emetal_calc`
    SELECT
        e.*,   
        IF (e.start < e.startx && e.start <> 0, e.startx / e.start, IF (e.startx <> 0, 1.0000, e.startx)) get,
        IF (e.start < e.startx && e.start <> 0, 1.0000, IF (e.startx <> 0, e.start / e.startx, e.start)) give
    FROM `{$wpdb->prefix}emetal` e
    WHERE emetalx <> emetaly
        AND start <> 0
        AND startx <> 0");
А вот весь кусок кода

Код:
public static function updateDoubleExchangeTable($wpdb) {
            
            $disableDouble = (boolean)$wpdb->get_var("SELECT option_value FROM `{$wpdb->prefix}options` WHERE option_name='exch_disable_double'");
            
            $wpdb->query("TRUNCATE TABLE `{$wpdb->prefix}emetal_calc`");
            $wpdb->query("           
INSERT INTO `{$wpdb->prefix}emetal_calc`
    SELECT
        e.*,   
        IF (e.start < e.startx && e.start <> 0, e.startx / e.start, IF (e.startx <> 0, 1.0000, e.startx)) get,
        IF (e.start < e.startx && e.start <> 0, 1.0000, IF (e.startx <> 0, e.start / e.startx, e.start)) give
    FROM `{$wpdb->prefix}emetal` e
    WHERE emetalx <> emetaly
        AND start <> 0
        AND startx <> 0");

            $wpdb->query("TRUNCATE TABLE `{$wpdb->prefix}zero_rezerv`");
            $wpdb->query("
INSERT INTO `{$wpdb->prefix}zero_rezerv`
SELECT
    emetalx,
    emetaly
FROM
    `{$wpdb->prefix}emetal_calc`
GROUP BY
    emetalx, emetaly
HAVING SUM(rezerv) <= 0");

            $wpdb->query("TRUNCATE TABLE `{$wpdb->prefix}double_exchange`");
            
            if (!$disableDouble) {
            
            $wpdb->query("
INSERT INTO `{$wpdb->prefix}double_exchange` 
    SELECT 
        e1.emetalx start_vlt, 
        e2.emetalx middle_vlt,
        e2.emetaly end_vlt,
        e1.get get1,
        e1.give give1,
        e2.get get2,
        e2.give give2,
        e1.koef koef1,
        e2.koef koef2,
        (
            SELECT avg(koef) FROM `{$wpdb->prefix}emetal`
            WHERE emetalx = e1.emetalx
                AND emetaly = e2.emetaly) original_koef,
        e1.koef / e2.koef result_koef,
        e1.rezerv rezerv1,
        e2.rezerv rezerv2,
        e1.changer changer1,
        e2.changer changer2
    FROM `{$wpdb->prefix}emetal_calc` e1
    INNER JOIN `{$wpdb->prefix}emetal_calc` e2
        ON e1.emetaly = e2.emetalx AND e1.emetalx <> e2.emetaly
    WHERE
        NOT EXISTS (
            SELECT * FROM `{$wpdb->prefix}emetal_calc` e WHERE e.emetalx = e1.emetalx AND e.emetaly = e2.emetaly
        )
        OR
        EXISTS (
            SELECT * FROM `{$wpdb->prefix}zero_rezerv` WHERE emetalx = e1.emetalx AND emetaly = e2.emetaly
        )");
            }
        }
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Ну так исправь ошибку. Тебе база уже говорит что не так.
 

ANkn

Новичок
так я не понимаю что и на что исправить, поэтому и задаю вопрос, я не кодер, а в гугле ответов не нашел.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Если вы не кодер, почему тогда вы этим занимаетесь? И, да, когда задают вопрос, обычно сообщение об ошибке приводят целиком.
 

ANkn

Новичок
А кому еще заниматься. Мой сайт. Да, сейчас.

Код:
 \xd0\x91\xd0\xb0\xd0\xb7\xd0\xb0 \xd0\xb4\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd1\x85 WordPress \xd0\xb2\xd0\xbe\xd0\xb7\xd0\xb2\xd1\x80\xd0\xb0\xd1\x82\xd0\xb8\xd0\xbb\xd0\xb0 \xd0\xbe\xd1\x88\xd0\xb8\xd0\xb1\xd0\xba\xd1\x83 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘get, \n\t\tIF (e.start < e.startx && e.start <> 0, 1.0000, IF (e.startx <> 0, e.sta’ at line 4 \xd0\xb2 \xd0\xbe\xd1\x82\xd0\xb2\xd0\xb5\xd1\x82 \xd0\xbd\xd0\xb0 \xd0\xb7\xd0\xb0\xd0\xbf\xd1\x80\xd0\xbe\xd1\x81 \t\t\t\nINSERT INTO  wp_emetal_calc\n\tSELECT \n\t\te.*, \n\t\tIF (e.start < e.startx && e.start <> 0, e.startx / e.start, IF (e.startx <> 0, 1.0000, e.startx)) get, \n\t\tIF (e.start < e.startx && e.start <> 0, 1.0000, IF (e.startx <> 0, e.start / e.startx, e.start)) give \n\tFROM wp_emetal e \n\tWHERE emetalx <> emetaly \n\t\tAND start <> 0 \n\t\tAND startx <> 0, \xd0\xb2\xd1\x8b\xd0\xbf\xd0\xbe\xd0\xbb\xd0\xbd\xd0\xb5\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb9 ExchUtils::updateData, ExchUtils::updateDoubleExchangeTable
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Версия движка базы? get может быть reserved словом.
 
  • Like
Реакции: ANkn

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
В 5.7 get - зарезервированное слово.

В таких случаях надо писать его в `кавычках`.
 
Последнее редактирование модератором:
  • Like
Реакции: ANkn

ANkn

Новичок
Вот! теперь все работает! Огромнейшее вам спасибо! Даже хостинг не смог понять в чем ошибка, хотя я им все предоставил, а вы вот так вот сразу. Спасибо!
 
Сверху