mysql_real_escape_string (): доступ запрещен при вставке в БД - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь использовать устаревшее расширение MediaWiki в PHP 5.6 и более поздних версиях, и оно терпит неудачу, когда дело доходит до вставок в БД.

И да, это не дубликат, так как код другой.

Полная ошибка:

Предупреждение: mysql_real_escape_string(): Доступ запрещен для пользователя '' @ 'localhost' (используется пароль: НЕТ)

Я попытался изменить на mysqli_real_escape_string, но затем у меня было:

mysqli_real_escape_string() ожидает ровно 2 параметра, 1 указан в строке 235

Вот функция:

function Lookup_addLookup ($url, $name, $group)
{
    $dbw = wfGetDB(DB_MASTER);

    $groupOrder = Lookup_getGroupOrder($group);
    $dbw->query ("INSERT INTO ".Lookup_prefix()."lookups (lu_name, lu_url, lu_group, lu_order, lu_group_order) VALUES ('".mysql_real_escape_string($name)."', '".mysql_real_escape_string($url)."', '".mysql_real_escape_string($group)."', 1, $groupOrder)");

    Lookup_reOrderGroups();
    return true;
}

И еще один ниже:

function Lookup_moveGroupUp($group)
{
    $dbw = wfGetDB(DB_MASTER);

    $dbw->query ("UPDATE ".Lookup_prefix()."lookups SET lu_group_order = 0 WHERE lu_group = '".mysqli_real_escape_string($group)."'");

    Lookup_reOrderGroups();

    return true;
}

1 Ответ

0 голосов
/ 15 февраля 2019

mysqli_real_escape_string() нужна ссылка на базу данных в качестве первого параметра, поэтому она не работает.

Однако MediaWiki хочет, чтобы мы избегали прямых запросов , поэтому он имеет$dbw->insert() метод вместо, одна из нескольких функций-оболочек .

Используйте что-то вроде этого:

function Lookup_addLookup ($url, $name, $group)
{
    $dbw = wfGetDB(DB_MASTER);

    $groupOrder = Lookup_getGroupOrder($group);
    $dbw->insert(
        Lookup_prefix()."lookups",
        array(
            'lu_name'  => $name,
            'lu_url'   => $url,
            'lu_group' => $group,
            'lu_order' => 1,
            'lu_group_order' => $groupOrder
        )
    );

    Lookup_reOrderGroups();
    return true;
}

И во втором примере,используйте $dbw->update():

function Lookup_moveGroupUp($group)
{
    $dbw = wfGetDB(DB_MASTER);

    $dbw->update(
        Lookup_prefix()."lookups",
        array(
            "lu_group_order" => 0
        ),
        array(
            "lu_group" => $group
        )
    );

    Lookup_reOrderGroups();

    return true;
}

Для получения дополнительной информации и других оболочек SQL прочитайте о различных функциях оболочки и их документации .

...