1 Востаннє редагувалося savikyan (28.02.2018 22:40:40)

Тема: Як зберегти текст SQL запиту в таблицю БД

Всім доброго вечора) Я почав вивчати PHP. Виникла ідея створити щось типу цього. https://www.w3schools.com/sql/trysql.as … select_all Але локальну версію. В мене є БД, з якої буде проводитись вибірка. Є форма, в якій користувач вводить запит на вибірку даних з таблиці. Користувач клікає на кнопку надіслати, тоді його відповідь( запит типу SELECT id_seller, name_seller, percent_of_sales FROM test_sellers WHERE city = 'Київ') повинна записуватись в таблицю БД(таблиця queries, поле text_query), а потім вона порівнюється із правильним значенням (зараз правильне значення записане в змінну $right_query) і у випадку збігу- користувачеві нараховуються бали. Додаю скрін бази.

Форма:
[code=HTML]
<div id="content">
    <h3>Завдання 1</h3>
    <p id="description">Вибрати всіх продавців(прізвище, ім'я, комісійні), які проживають в м.Київ</p>
    <div id="query" class="textbox">
        <form class="query_form" method="post" action="admin/controllers/queryController.php" name="queryform">
            <ul>
                <li>
                    <textarea name="querytext" rows="10px" cols="100px" required></textarea>
                </li>
                <li>
                    <input class="submit" type="submit">
                </li>
            </ul>
        </form>
    </div>

    <h3>Результат вибірки</h3>
</div>
[/code]

Обробник форми:
[code=PHP]
<div id="content">
    <?php
    if (isset($_POST['querytext'])) {
        $textquery = $_POST['textquery'];
        var_dump($textquery);
    }
    $insert_query = mysqli_query ($link,"INSERT INTO queries (text_query) VALUES ('$textquery')");
    if($insert_query == true){
        echo 'Запит успішно доданий в базу.';
    }
    else{
        echo 'Запит в базу не доданий';
    }
    $right_query = "SELECT id_seller, name_seller, percent_of_sales FROM _test_sellers WHERE city = 'Київ'"; //правильна відповідь

    if($textquery == $right_query){
        $query = mysqli_query($link,"SELECT id_seller, name_seller, percent_of_sales FROM _test_sellers WHERE city = 'Київ'");
        $myrow = mysqli_fetch_array($query, MYSQLI_ASSOC);
    }

    else
    {
        echo "<p>Ви ввели неправильний запит.</p>";
    }
    ?>
</div>
[/code]

Таблиця queries(запити користувачів) і _test_sellers(звідси здійснюється вибірка)

Post's attachments

ScreenShot_1.Png 252.41 kb, 170 downloads since 2018-02-28 

2

Re: Як зберегти текст SQL запиту в таблицю БД

Вечір добрий. А в чому питання? Чи ви просто радістю ділитеся?

3

Re: Як зберегти текст SQL запиту в таблицю БД

Вибачте) Питання в тому як можна записати запит SQL, який вводитиме користувач, у таблицю БД.

4

Re: Як зберегти текст SQL запиту в таблицю БД

https://stackoverflow.com/questions/173 … to-a-table

5 Востаннє редагувалося 221VOLT (01.03.2018 01:24:57)

Re: Як зберегти текст SQL запиту в таблицю БД

нууу, спочатку перетворюєте всі лапки на їх html-мнемоніки
https://uk.wikipedia.org/wiki/%D0%A1%D0 … D0%B0_HTML

і далі тицяєте то все в текстове поле

-----
хоча, напевно, можна все розпарсити в дерево, проте - навіщо?
*SCRATCH* не зовсім зрозумів проблему

6

Re: Як зберегти текст SQL запиту в таблицю БД

Перед додаванням в таблицю - mysqli_real_escape_string.
Або використовувати mysqli_prepare з mysqli_stmt_bind_param та mysqli_stmt_execute, так загалом надійніше.
Перед виведенням назад - htmlspecialchars.

Подякували: VTrim, 221VOLT, leofun01, savikyan4

7

Re: Як зберегти текст SQL запиту в таблицю БД

koala написав:

Перед додаванням в таблицю - mysqli_real_escape_string.
Або використовувати mysqli_prepare з mysqli_stmt_bind_param та mysqli_stmt_execute, так загалом надійніше.
Перед виведенням назад - htmlspecialchars.

Дуже дякую) Я просто не знав в чому проблема, що запити не додаються в базу і в якому напрямку потрібно шукати інформацію. Слава Коалі  *DRINK*

Подякували: FakiNyan, koala, LoganRoss3

8 Востаннє редагувалося koala (02.03.2018 00:01:12)

Re: Як зберегти текст SQL запиту в таблицю БД

Наступного разу, будь ласка, описуйте що ви робите (є), код (є) і опис проблеми. Не "пише помилку" чи "не додаються в базу", а конкретно - які повідомлення про помилки, який результат роботи, чим він відрізняється від очікуваного і т.д.

Подякували: 221VOLT1

9

Re: Як зберегти текст SQL запиту в таблицю БД

koala написав:

Наступного разу, будь ласка, описуйте що ви робите (є), код (є) і опис проблеми. Не "пише помилку" чи "не додаються в базу", а конкретно - які повідомлення про помилки, який результат роботи, чим він відрізняється від очікуваного і т.д.

В тім то й справа, я включив відображення всіх помилок error_reporting(-1), а помилок жодних не було. Дякую за пораду, наступного разу опишу все детальніше) Вдалого дня і гарного настрою!

Подякували: koala, ostap34PHP, 221VOLT3