Ошибка MySQL при использовании апострофов в текстовом поле автоответчика

0

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


Ошибка MySQL: 1064 (у вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса, используемого рядом с "m", только чтобы убедиться, что вы получили свою бесплатную загрузку. Если нет, вот "в строке 5"


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

Пожалуйста, помогите. Благодаря, Дениз

  • 0
    Какой автоответчик? Где этот текст вводится и какой код преобразует его? Кавычка должна быть экранирована (и вы, вероятно, сейчас уязвимы для SQL-инъекций). Заменить ' '' - это начало, но недостаточно.
Теги:

2 ответа

0

Попробуйте использовать два апострофа для каждого апострофа. Если это работает, замените его на проверку до того, как база данных будет обработана sql.

0

Если вы используете PHP, сделайте свой пост или получите переменные в безопасности и подтвердите sql, используя "mysql_real_escape_string". Это сделает вашу строку безопасной от "SQL Injection too"

<?php

if (isset($_POST['product_name']) && isset($_POST['product_description']) && isset($_POST['user_id'])) {
    // Connect

    $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password');

    if(!is_resource($link)) {

        echo "Failed to connect to the server\n";
        // ... log the error properly

    } else {

        // Reverse magic_quotes_gpc/magic_quotes_sybase effects on those vars if ON.

        if(get_magic_quotes_gpc()) {
            $product_name        = stripslashes($_POST['product_name']);
            $product_description = stripslashes($_POST['product_description']);
        } else {
            $product_name        = $_POST['product_name'];
            $product_description = $_POST['product_description'];
        }

        // Make a safe query
        $query = sprintf("INSERT INTO products (`name`, `description`, `user_id`) VALUES ('%s', '%s', %d)",
                    mysql_real_escape_string($product_name, $link),
                    mysql_real_escape_string($product_description, $link),
                    $_POST['user_id']);

        mysql_query($query, $link);

        if (mysql_affected_rows($link) > 0) {
            echo "Product inserted\n";
        }
    }
} else {
    echo "Fill the form properly\n";
}
?>
  • 0
    Хорошо, спасибо, но куда мне поместить все это кодирование? Если я найду файл, содержащий что-то похожее на это, могу ли я просто заменить его на этот код?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню